题解:AT_agc038_f [AGC038F] Two Permutations

news/2025/10/3 20:49:00/文章来源:https://www.cnblogs.com/a1a2a3a4a5/p/19124979

题目:

置换环是显然的,一个环有旋一下和不旋两种状态。

\((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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/926303.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

完整教程:flink批处理-时间和窗口

完整教程:flink批处理-时间和窗口2025-10-03 20:43 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !impo…

详细介绍:Java基础

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

10.3 考试总结

10.3 考试总结10.3 考试总结 题面下载 得分情况 悲痛爆零 时间分配(大概) 8:30 $ \ $ -- $ \ $T1第一版dp写了出来,大样例没过,开始打dfs 9:20 $ \ $ -- $ \ $T1 dfs好像过了,感觉T3更简单,想去打T3 10:10 --…

国庆集训-JDAY3

国庆集训-JDAY3T1 love思路 暴力枚举 解法 枚举天数,累加即可 归纳总结解题策略 枚举 结果 100pts 时间分配 10minT2 square思路 递推,从\(s_1\)推到\(s_n\) 解法 \(s\)每次变成\(s+n个.+s\) 归纳总结解题策略 递归/…

CSP-S 复赛指南(2025年版)

第一章 数据结构 第一节 线性结构 1.1 【5】双端栈 1.1.1 什么是双端栈? 在理解双端栈之前,我们先回顾一下普通的栈。一个普通的栈,所有元素的插入(入栈,push)和删除(出栈,pop)都只能在同一端——也就是“栈…

AI元人文系列文章:AI元人文的未来——软硬件协同

AI元人文系列文章:AI元人文的未来——软硬件协同 当算法的思考开始关乎人类社会的命运,我们需要为它构建一个既能思考也能自省的数字大脑。 引言:从软件困境到硬件曙光 在AI元人文的探索中,我们构想了一个能够理解…

10.3考试反思

今天得了130/400,问题如下: 1.不应盲目直接开始做t1,应先花10mins把所有题看一遍,确定一下大概题型,判断难易程度。 2.考试时不要浮躁,不要说话,认真做题,发挥自己的最大水平。 3.t1正解->30pts,原因是写哈…

10.2 考试总结

10.2 考试总结$ \Huge 10.2 考试总结$ 得分情况预计得分:20+20+0+0 实际得分:0+4+0+0时间分配(大概)8:20 - 9:10 把所有题都看了一遍,决定先做T1 9:10 - 9:50 打出T1第一版过小样例,去做T2(T1最接近正解的一次…

中建西部建设网站wordpress网站压缩

本文将介绍如何通过EventChannel实现Flutter与原生平台之间的双向通信。如果想了解如何通过MethodChannel实现Flutter调用Android原生平台的方法,可以参考上篇文章。 Flutter如何实现与Android底层平台通信,调用底层Android原生方法https://sgknight.blog.csdn.net/article/…

网站的注册和登录怎么做网站开发公司长春

登陆linux系统之后&#xff0c;使用tab自动补全快捷键的时候显示&#xff1a;cannot create temp file for here-document: No space left on device。 原因&#xff1a;磁盘满了&#xff0c;不能创建临时文件。 解决方法&#xff1a;&#xff08;逐级查看占用空间过多的目录…

ハレハレヤ

夜の街迷いし秽れの乱歩 以不洁的乱步 迷失于夜晚的街道 何処から来たのよ见窄らしいね 是从何而来的呢 真是潦倒落魄啊 ねぇうちにおいで温めてあげるよ 呐 来我这吧 会给你温暖的 今までよく顽张ったよね 一直以来都…

【愚公系列】《人工智能70年》056-形形色色的机器人(前世今生) - 实践

【愚公系列】《人工智能70年》056-形形色色的机器人(前世今生) - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: …

黑龙江企业网站建设公司宣传片拍摄设备清单

一、概念 1.1 Compose优势 由一个个可以组合的Composable函数拼成界面&#xff0c;方便维护和复用。布局模型不允许多次测量&#xff0c;提升了性能。Compose可以和View互操作&#xff08;相互包含对方&#xff09;。 1.2 声明式UI APP展示的数据绝大多数不是静态数据而是会…

4-创建索引和约束 - 实践

4-创建索引和约束 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &q…

双线网站选服务器我要申请开网店

操作 DDL(Data Definition Language 数据定义语言)用于操作对象和对象的属性,这种对象包括数据库本身,以及数据库对象,像:表、视图等等,DDL 对这些对象和属性的管理和定义具体表现在 create、drop 和 alter 上。 create 可以创建数据库和数据库的一些对象 drop …

Unity 单元测试框架用法 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025十一集训——Day2做题

https://vjudge.net/contest/753101 A. vjudge CF给 a、b、d,求 x 使 \(a or x\) 与 \(b or x\) 是 d 的因数,\(a,b,d<2^{30}\),要求 \(x<2^{60}\)考虑让 \(a or x = x\),\(b or x = x\),使 x 是 d 的倍数即…

20250929给PRO-RK3566开发板在Buildroot系统下裁剪内核【已关闭摄像头ov4689为例子】 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

核聚变:Commonwealth Fusion Systems

核聚变:Commonwealth Fusion Systems 核聚变,作为模仿太阳能量产生机制的终极清洁能源梦想,长久以来面临着“永远还有三十年”的困境。如今,一家从麻省理工学院(MIT)剥离出来的公司——Commonwealth Fusion Syst…

个人可以建论坛网站吗商会网站建设招标方案

文章目录 2.1_3 奈氏准则和香农定理&#xff08;一&#xff09;失真&#xff08;二&#xff09;失真的一种现象——码间串扰&#xff08;三&#xff09;奈氏准则&#xff08;奈奎斯特定理&#xff09;&#xff08;四&#xff09;香农定理&#xff08;五&#xff09;“Nice”和“…