<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      NOIP2025模擬1

      T1:公司的供應鏈(dag)

      思路:

      大概就是推出性質但是沒寫出來。

      我們不難發現,對于一個環來說,把環內全部的邊刪掉是合法的。

      然后我們就從一個點開始搜,如果沒有環,就把經過的邊都標記一下,這是要保留的。然后再記錄一下走過的邊數,保證每個環只經過一次。

      代碼:

      $code$
      #include<iostream>
      #include<vector>
      using namespace std;
      const int N=600000+5;
      int n,m,cnt[N],f[N],x[N],y[N],ans;
      bool vis[N];
      vector<pair<int,int>> v[N];
      inline int dfs(int x){
      	if(vis[x]) return x;//有環 
      	vis[x]=1;
      	while(cnt[x]<(int)v[x].size()){
      		int flag=dfs(v[x][cnt[x]].second);
      		if(!flag) f[v[x][cnt[x]].first]=-1;//標記保留的邊 
      		cnt[x]++;//走過的邊數 
      		if(flag!=x&&flag){//后面有個小環 
      			vis[x]=0;
      			return flag;
      		}
      	}
      	vis[x]=0;
      	return 0;//無環 
      }
      int main(){
      //	freopen("dag.in","r",stdin);
      //	freopen("dag.out","w",stdout);
      	ios::sync_with_stdio(false);
      	cin>>n>>m;
      	for(int i=1;i<=m;i++){
      		cin>>x[i]>>y[i];
      		v[x[i]].push_back(make_pair(i,y[i]));//建邊 
      	}
      	for(int i=1;i<=n;i++) if(cnt[i]<(int)v[i].size()) dfs(i);//還有邊沒走 
      	for(int i=1;i<=m;i++) if(f[i]==-1) ans++;
      	cout<<ans<<'\n';
      	for(int i=1;i<=m;i++) if(f[i]==-1) cout<<x[i]<<" "<<y[i]<<'\n';
      	return 0;
      }
      

      T2:宇宙的卷積(juanji)

      思路:

      大概就是賽時兩眼一閉數組就開 \(20\) 然后掛了 \(60 ~ pts\) 吧。

      有沒有大佬給我講講 \(T2\) 啊!!真的不會啊!!

      T3:艦隊的遠征(far)

      思路:

      看眼式子有點像李超,但是馬上自我否定了。最后選擇跑了 \(n^2\)\(dij\)

      其實就是把路徑分為三部分:

      \[s→x=>y→t \]

      \(x,y\) 之間的邊是我們新建的特殊邊。

      怎么求答案呢?

      正著跑一邊最短路求出到 \(s\) 的最短路,反著求一遍最短路到 \(t\) 的最短路,然后維護一下 \((x-y)^2\)

      然后答案是什么呢?

      \[dis1_x+dis2_y+(x-y)^2 \]

      整理一下,可得

      \[dis1_x+x^2+dis2_y+y^2-2*x*y \]

      我們枚舉每一個 \(x\) ,因此 \(dis1_x+x^2\) 為定值,所以我們只需要維護 \(dis2_y+y^2-2*x*y\) 就好了。

      用什么維護呢?用我否定了的李超線段樹。【對不起】

      然后呢?

      然后就沒了。

      感謝 Wx_y大俠 的博客(就是能不能換個題目??)

      代碼:

      $code$
      #include<iostream>
      #include<queue>
      #define int long long
      using namespace std;
      const int N=2e6+5,inf=1e18;
      int n,m,s,t,x,y,z,dis1[N],dis2[N],ans=1e18,cnt1,cnt2,head1[N],head2[N],tr[N<<1];
      bool vis1[N],vis2[N];
      struct flower{
      	int to,nxt,val;
      }a[N],b[N];
      struct css{
      	int k,b;
      }line[N];
      inline void add1(int x,int y,int z){
      	a[++cnt1].to=y;
      	a[cnt1].val=z;
      	a[cnt1].nxt=head1[x];
      	head1[x]=cnt1;
      }
      inline void add2(int x,int y,int z){
      	b[++cnt2].to=y;
      	b[cnt2].val=z;
      	b[cnt2].nxt=head2[x];
      	head2[x]=cnt2;
      }
      inline void dij1(int s){
      	priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> q;	
      	for(int i=1;i<=n;i++) dis1[i]=1e18,vis1[i]=0;
      	dis1[s]=0;
      	q.push({0,s});
      	while(!q.empty()){
      		int x=q.top().second;q.pop();
      		if(vis1[x]) continue;
      		vis1[x]=1;
      		for(int i=head1[x];i;i=a[i].nxt){
      			int y=a[i].to;
      			if(dis1[y]>dis1[x]+a[i].val){
      				dis1[y]=dis1[x]+a[i].val;
      				if(!vis1[y]) q.push(make_pair(dis1[y],y));
      			}
      		}
      	}
      }
      inline void dij2(int s){
      	priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> q;
      	for(int i=1;i<=n;i++) dis2[i]=1e18,vis2[i]=0;
      	dis2[s]=0;
      	q.push({0,s});
      	while(!q.empty()){
      		int x=q.top().second;q.pop();
      		if(vis2[x]) continue;
      		vis2[x]=1;
      		for(int i=head2[x];i;i=b[i].nxt){
      			int y=b[i].to;
      			if(dis2[y]>dis2[x]+b[i].val){
      				dis2[y]=dis2[x]+b[i].val;
      				if(!vis2[y]) q.push(make_pair(dis2[y],y));
      			}
      		}
      	}
      }
      inline int calc(int id,int x){
      	return line[id].k*x+line[id].b;
      } 
      inline void insert(int rt,int l,int r,int id){
      	if(!tr[rt]){
      		tr[rt]=id;
      		return ;
      	}
      	if(l==r){
      		if(calc(tr[rt],l)>calc(id,l)) tr[rt]=id;
      		return ;
      	}
      	int mid=(l+r)>>1;
      	if(calc(id,mid)<calc(tr[rt],mid)) swap(id,tr[rt]);
      	if(calc(id,l)<calc(tr[rt],l)) insert(rt<<1,l,mid,id);
      	if(calc(id,r)<calc(tr[rt],r)) insert(rt<<1|1,mid+1,r,id);
      }
      inline int query(int rt,int l,int r,int x){
      	if(l==r) return calc(tr[rt],x);
      	int ans=calc(tr[rt],x);
      	int mid=(l+r)>>1;
      	if(x<=mid) ans=min(ans,query(rt<<1,l,mid,x));
      	else ans=min(ans,query(rt<<1|1,mid+1,r,x));
      	return ans;
      }
      signed main(){
      	freopen("far.in","r",stdin);
      	freopen("far.out","w",stdout);
      	ios::sync_with_stdio(false);
      	cin>>n>>m>>s>>t;
      	for(int i=1;i<=m;i++){
      		cin>>x>>y>>z;
      		add1(x,y,z);add2(y,x,z);
      	}
      	dij1(s);dij2(t);
      	line[0]=(css){0,inf};
      	for(int i=1;i<=n;i++) line[i]=(css){-2*i,i*i+dis2[i]};
      	for(int i=1;i<=n;i++) insert(1,1,n,i);
      	for(int i=1;i<=n;i++) ans=min(ans,query(1,1,n,i)+i*i+dis1[i]);
      	cout<<ans<<'\n';
      	return 0;
      }
      

      T4:軍團的陣列線(team)

      顯然不會

      后言

      $songs$

      皇家海軍過戰場

      日不落帝國踏汪洋

      女王手指向何方

      東印度之殤

      百年玫瑰戰爭狂

      鐵甲艦掀起了殖民浪

      黃金澆筑的徽章

      是榮耀的過往

      燈塔的火焰猶閃亮

      合眾國航母在啟航

      自由的軍隊出邊疆

      烈火燃他鄉

      衛星畫滿蒼穹上

      五大洲遍布我的軍港

      手握著北約的韁繩

      雄鷹依舊翱翔

      圣母院鐘聲繞梁

      凡爾賽宮映朝陽

      第三帝國軍魂游蕩

      凝視這群羊

      鋼鐵洪流凜寒冰鑲

      核潛艇游蕩在北冰洋

      喀秋莎掠過的寒光

      照亮了紅場

      寒冰埋葬了沙皇

      雙頭鷹軍號不再回響

      冬宮門前回眸望

      蘇維埃榮光

      塵封過五帝與三皇

      歷經了夏商和漢唐

      百年蟄伏不卑不亢

      華夏迎曙光

      五千年歲月滄桑

      文脈傳承至今威萬邦

      共和國乘風破浪

      征途再起航

      翻手為云覆手為霜

      執天下牛耳喜怒五常

      肩扛世界格局

      筑山河恒久輝煌

      社稷固若金湯

      千百年送走多少列強

      未曾浴血染沙場

      怎配踏八荒

      普天下星辰未央

      誰妄想撼動我的權杖

      五常眼眸盡琳瑯

      看天下興亡

      posted @ 2025-11-04 20:57  晏清玖安  閱讀(21)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 少妇人妻无码专区在线视频| 国产日产亚洲系列最新| 韩国深夜福利视频在线观看| 哈尔滨市| 亚洲精品日韩在线丰满| 国产精品SM捆绑调教视频| 四虎国产精品免费久久久| 亚洲乱码日产精品一二三| 国产女同疯狂作爱系列| 免费人妻无码不卡中文18禁| 黑人大战欲求不满人妻| 亚洲一区二区三区自拍麻豆| 69人妻精品中文字幕| 国产精品中文字幕自拍| 亚洲中文字幕无码爆乳| 亚洲一区二区三区自拍公司| 精品久久久久久国产| 最近中文字幕免费手机版| 亚洲精品日本久久久中文字幕| 精品国精品自拍自在线| 成人国产精品一区二区网站公司| 思思久99久女女精品| 欧美激情综合色综合啪啪五月| 欧美成人精品一级在线观看| 日韩国产精品区一区二区| 含紧一点h边做边走动免费视频| 国产精品自在自线免费观看| 国产视色精品亚洲一区二区| 亚洲欧美中文字幕日韩一区二区| 亚洲乱码精品久久久久..| 久久精品国产亚洲AV瑜伽| 日韩人妻精品中文字幕专区| 天堂一区人妻无码| 熟妇人妻久久春色视频网| 苍井空毛片精品久久久| 午夜av高清在线观看| 亚洲人成网站在小说| 怡春院久久国语视频免费| 国产综合久久久久鬼色| 精品国产乱码久久久久久口爆网站| 人妻少妇偷人作爱av|