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

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

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

      啟發式合并 [PA 2014] Fiolki

      關于啟發式合并

      在我們愉快打暴力的時候,我們會遇到需要合并一些數據的情況。

      我們舉一個相當簡單的例子,我們需要很多次合并一些 vector,這個時候作為人類我們會想從小的里邊取放到大的里邊。

      若我們需要大到小,就先反過來,再利用對應標記呼喚的方式來進行訪問。

      然而對于 stl 來世 swap 就可以。

      整個過程是 \(nlogn\) 級別的。

      對于任意一個元素,每一次被訪問都會使得它所在的集合至少增長一倍,所以就是 \(nlogn\) 級別的。

      [PA 2014] Fiolki

      這個東西我們并不知道怎么做,但是發現如果我們在合并的過程之中可以維護每個集合的東西就可以做了。

      考慮 vector 維護每個集合中存在的,可能的反應式(這個東西有嚴格的反應順序)。

      之后啟發式合并兩個,并查集方便我們檢查反應是否可以進行。

      非常完美做完了。

      代碼↓

      #include <bits/stdc++.h>
      #define int long long
      using namespace std;
      const int MN=1e6+116;
      int father[MN], n, m, k, ans=0;
      int g[MN], a[MN], b[MN], c[MN], d[MN];
      int find(int x){
      	if(father[x]!=x) father[x]=find(father[x]);
      	return father[x];
      }
      vector <int> st[MN];
      signed main(){
      	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
      	cin>>n>>m>>k; for(int i=1; i<=n; ++i) cin>>g[i];
      	for(int i=1; i<=n; ++i) father[i]=i;
      	for(int i=1; i<=m; ++i) cin>>a[i]>>b[i];
      	for(int i=1; i<=k; ++i){
      		cin>>c[i]>>d[i];
      		st[c[i]].push_back(i);
      		st[d[i]].push_back(i);
      	}
      	for(int i=1; i<=m; ++i){
      		if(st[a[i]].size()>st[b[i]].size())
      			swap(st[a[i]],st[b[i]]);
      		father[find(a[i])]=find(b[i]);
      		vector <int> tmp;
      		for(auto v:st[a[i]]){
      			if(find(c[v])==find(d[v])) tmp.push_back(v);
      			else st[b[i]].push_back(v);
      		}
      		sort(tmp.begin(),tmp.end());
      		for(auto k:tmp){
      			int minn=min(g[c[k]],g[d[k]]);
      			ans+=minn*2;
      			g[c[k]]-=minn;
      			g[d[k]]-=minn;
      		}
      	}
      	cout<<ans<<'\n';
      	return 0;
      }
      
      posted @ 2025-09-28 19:19  BaiBaiShaFeng  閱讀(8)  評論(0)    收藏  舉報
      Sakana Widget右下角定位
      主站蜘蛛池模板: 日韩熟女熟妇久久精品综合| 逊克县| 中国女人内谢69xxxx| 国产精品久久一区二区三区| 国内极度色诱视频网站| 久久综合精品国产一区二区三区无| 性色av无码久久一区二区三区| 日本一区二区三区在线播放| 午夜福利yw在线观看2020| 乱码中字在线观看一二区| 且末县| 亚洲国产一区二区三区久| 中文字幕久久国产精品| 久久久久久久无码高潮| 日本xxxx色视频在线播放| 精品久久人人做爽综合| 性欧美大战久久久久久久 | 国产绿帽在线视频看| 亚洲精品美女一区二区| 亚洲综合国产激情另类一区| 日韩激情成人| 国产情侣激情在线对白| 色综合天天综合网中文伊| 十九岁的日本电影免费观看| 亚洲一区二区中文字幕| 婷婷色综合视频在线观看| 激情综合网激情国产av| 中文字幕av日韩有码| 日韩视频一区二区三区视频 | 九九成人免费视频| 久久96热在精品国产高清| 日韩深夜福利视频在线观看| 国产三级精品三级在线专区1| 小嫩批日出水无码视频免费| 国产精品无遮挡一区二区| 国产精品久久久久久影视| 激情综合五月网| 蜜臀午夜一区二区在线播放| 一区二区三区国产亚洲网站| 麻豆国产成人AV在线播放| 国产成人永久免费av在线|