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

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

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

      題解:AT_agc038_f [AGC038F] Two Permutations

      題目:

      置換環是顯然的,一個環有旋一下和不旋兩種狀態。

      \((P_i=i,Q_i=i,P_i=Q_i)\) 無非這三個限制。

      1. \((0,0,0)\):旋一個以上就有貢獻。
      2. \((0,0,1)\):旋一個才有貢獻。
      3. \((0,1,0)\):旋 P 才有貢獻。
      4. \((1,0,0)\):旋 Q 才有貢獻。
      5. \((1,1,1)\):沒貢獻。
      6. \((0,1,1)\):不合法。
      7. \((1,0,1)\):不合法。
      8. \((1,1,0)\):不合法。

      最小割!直接出來了!
      設 S、T 點后肯定要再把每個置換環當點塞進去,思考一個點 \(i\) 怎么連邊:
      下面稱 \(p_i\)\(P_i\) 在的置換環,\(q_i\)\(Q_i\) 在的置換環。
      假定連 \(S\) 為旋,連 \(T\) 為沒旋。
      第一種:wc。

      trick:假定 \(p_i\)\(S\) 為旋,\(q_i\)\(T\) 為旋。

      第一種:\(S→q_i→p_i→T\) 無法貢獻,連 \(q_i→p_i\) 邊權為 \(1\)。
      第二種:\(S→q_i→p_i→T,S→p_i→q_i→T\) 無法貢獻,連 \(q_i→p_i,p_i→q_i\) 邊權為 \(1\)。
      第三種:\(S→q_i→…\) 無法貢獻,連 \(S→q_i\) 邊權為 \(1\)。
      第四種:\(p_i→T→…\) 無法貢獻,連 \(p_i→T\) 邊權為 \(1\)
      第五種:直接 ans--。

      初始令 \(ans=n\),減去第五種情況直接跑就行。

      #include<bits/stdc++.h>
      using namespace std;
      
      const int QAQ=2e6+9,inf=1e9;
      
      int dis[QAQ],kai[QAQ],lim;
      int n,p[QAQ],q[QAQ],cnt=1,head[QAQ],nex[QAQ*5],to[QAQ*5],w[QAQ],ans;
      void lian2(int u,int v,int wa)
      {
      	to[++cnt]=v;
      	nex[cnt]=head[u];
      	w[cnt]=wa;
      	head[u]=cnt;
      }
      void lian(int u,int v,int w)
      {
      	lian2(u,v,w);
      	lian2(v,u,0);
      }
      int s,t;
      queue<int> dui;
      int bfs()
      {
      	for(int i=1;i<=lim;i++) dis[i]=inf;
      	dis[s]=0;
      	kai[s]=head[s];
      	while(!dui.empty()) dui.pop();
      	dui.push(s);
      	while(!dui.empty())
      	{
      		int x=dui.front();dui.pop();
      		for(int i=head[x];i;i=nex[i])
      		{
      			int v=to[i];
      			if(w[i]>0&&dis[v]==inf)
      			{
      				kai[v]=head[v];
      				dis[v]=dis[x]+1;
      				dui.push(v);
      			}
      		}
      	}
      	if(dis[t]!=inf) return 1;
      	return 0;
      }
      int dfs(int x,int xian)
      {
      	if(x==t) return xian;
      	int ans=0;
      	for(int i=kai[x];i&&xian>0;i=nex[i])
      	{
      		kai[x]=i;
      		int v=to[i];
      		if(dis[v]==dis[x]+1&&w[i]>0)
      		{
      			int k=dfs(v,min(xian,w[i]));
      			w[i]-=k,w[i^1]+=k;
      			ans+=k,xian-=k;
      			if(k==0) dis[v]=inf;
      		}
      	}
      	return ans;
      }
      int cnt1,cnt2;
      struct xxx
      {
      	int f[QAQ];
      	int find(int x) {return x==f[x]?f[x]:f[x]=find(f[x]);}
      	void hebing(int x,int y)
      	{
      		x=find(x),y=find(y);
      		if(x==y) return ;
      		f[x]=y;
      	}
      	void cs()
      	{
      		for(int i=0;i<n;i++) f[i]=i;
      	}
      	
      } ta,tb;
      int duia[QAQ],duib[QAQ];
      signed main()
      {
      	cin>>n;
      	ta.cs(),tb.cs();
      	for(int i=0;i<n;i++) cin>>p[i],ta.hebing(i,p[i]);
      	for(int i=0;i<n;i++) cin>>q[i],tb.hebing(i,q[i]);
      	for(int i=0;i<n;i++)
      	{
      		if(i==ta.find(i)) duia[i]=++cnt1;
      		if(i==tb.find(i)) duib[i]=++cnt2;
      	}
      	for(int i=0;i<n;i++) duia[i]=duia[ta.find(i)],duib[i]=duib[tb.find(i)];
      	lim=cnt1+cnt2;
      	for(int i=0;i<n;i++) duib[i]+=cnt1;
      	s=lim+1,t=lim+2;
      	lim+=2;
      	for(int i=1;i<=cnt1;i++) lian(s,i,0),lian(i,t,0);
      	for(int i=1;i<=cnt2;i++) lian(s,cnt1+i,0),lian(cnt1+i,t,0);
      	ans=n;
      	for(int i=0;i<n;i++)
      	{
      		if(p[i]!=i&&q[i]!=i&&p[i]!=q[i]) lian(duib[i],duia[i],1);
      		else if(p[i]!=i&&q[i]!=i&&p[i]==q[i]) lian(duia[i],duib[i],1),lian(duib[i],duia[i],1);
      		else if(p[i]==i&&q[i]!=i&&p[i]!=q[i]) lian(duib[i],t,1);
      		else if(p[i]!=i&&q[i]==i&&p[i]!=q[i]) lian(s,duia[i],1);
      		else if(p[i]==i&&q[i]==i&&p[i]==q[i]) ans--;
      	}
      	while(bfs()) ans-=dfs(s,inf);
      	cout<<ans;
      	return 0;
      }
      
      posted @ 2025-10-03 20:44  _a1a2a3a4a5  閱讀(8)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 中文字幕亚洲制服在线看| 偷偷色噜狠狠狠狠的777米奇| 国产a在视频线精品视频下载 | 欧美人人妻人人澡人人尤物 | 亚洲综合网国产精品一区| 99福利一区二区视频| 人妻少妇久久中文字幕一区二区| 中文在线天堂中文在线天堂| 亚洲人成网网址在线看| 亚洲大尺度无码专区尤物| 成人午夜免费无码视频在线观看 | 国产做无码视频在线观看浪潮| 国产乱码精品一区二区上| 丁香五月婷激情综合第九色 | 色综合久久久久综合体桃花网| 九九久久人妻一区精品色| av无码精品一区二区乱子| 欧美日韩v| 日韩人妻精品中文字幕专区| 亚欧美闷骚院| 性一交一乱一乱一视频| 久久精品一区二区三区综合| 狠狠综合久久av一区二| 成人一区二区三区激情视频| 乱人伦中文字幕成人网站在线| 久久久久国产精品熟女影院| 国产精品亚洲mnbav网站| 少妇无套内谢免费视频| 国产福利永久在线视频无毒不卡| 国产精品一区高清在线观看| 欧美日韩精品一区二区三区高清视频 | 1精品啪国产在线观看免费牛牛| 天堂亚洲免费视频| 丁青县| 免费午夜无码片在线观看影院| 四虎影视国产精品永久在线 | 久久久久青草线蕉亚洲| 国产蜜臀一区二区在线播放| 国产精品久久久一区二区三区| 久久88香港三级台湾三级播放| 亚洲中文字幕精品无人区|