最大流,最小割刷题记录
T1 P2057 [SHOI2007] 善意的投票
题目
https://www.luogu.com.cn/blog/OnMyOwn/OnMyOwn
https://www.luogu.com.cn/problem/P2057
题目: 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉。对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神。虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可以投和自己本来意愿相反的票。我们定义一次投票的冲突数为好朋友之间发生冲突的总数加上和所有和自己本来意愿发生冲突的人数。每位小朋友应该怎样投票,才能使冲突数最小?
断点概述:
1,最小割建模困难,没有想到
2,对组合的处理欠思考,
思想概述:
code
T2 P2857 [USACO 06FEB ]Steady Cow Assignment G
题目
https://www.luogu.com.cn/problem/P2857
https://www.luogu.com.cn/blog/387840/solution-p3033
给出 N条 平行于坐标轴的线段,要你选出尽量多的线段使得这些线段两两没有交点(顶点也算),横的与横的,竖的与竖的线段之间保证没有交点,输出最多能选出多少条线段。
输入:(x1,y1,x2,y2)
断点概述:
1,建模在割,试图对所有点进行分类
2,读题不细,对同方向交点进行了讨论
3,输入坐标不保证顺序,需要满足我们的(不妨设)
思想概述:
1,二分图,一个方向一个,任意线段有交点就建边
2,求得最小割,删去这些匹配,也就是在这些有交点的线段中删去其一,即可分成两个独立集合
3,按照顺序类别枚举边,使得判断函数简单
code
int main()
{Mset(h,-1);read(n);rep(i,1,n){int x1,x2,y1,y2;read(x1);read(y1); read(x2); read(y2);if(x1==x2){if(y1>=y2)swap(y1,y2);px[++cx]={x1,y1,x2,y2};}else{if(x1>=x2)swap(x1,x2);py[++cy]={x1,y1,x2,y2};}}S = N -1;T = N -2;rep(i,1,cx){rep(j,1,cy){if(check(px[i],py[j]))add(i,cx+j,1);}}rep(i,1,cx)add(S,i,1);rep(i,1,cy)add(i+cx,T,1);wri(n-Dinic());return 0;
}
T2 P1231 教辅的组成
https://www.luogu.com.cn/problem/P1231
https://siyuan.blog.luogu.org/solution-p1231
题目:三分图匹配
断点概述:
1,三分图建模完成
2,中间节点流量限制没想到(限制在边上)
3,编号思维速度慢
code
int main()
{Mset(h,-1);/// 书 1 - n/// 书出 n+1 - n+n/// 练习 2*n+1 - 2*n+m/// 答案 2*n+m+1 - 2*n+m+kread(n); read(m); read(k);int cnt;S = N-1;T = N-2;read(cnt);rep(i,1,cnt){int x,y;read(x); read(y);add(2*n+y,x,1);}rep(i,1,n)add(i,i+n,1);read(cnt);rep(i,1,cnt){int x,y;read(x); read(y);add(x+n,2*n+y+m,1);}rep(i,1,m) add(S,i+2*n,1);rep(i,1,k) add(i+2*n+m,T,1);wri(Dinic());
}
断点概述:
int sol()
{int ans= 0;queue<int>q;q.push(S);Mset(st,0);while (q.size()){int top = q.front(); q.pop();for(int i=h[top];~i;i=ne[i]){if(i%2==0 && f[i]){int v=e[i];if(!st[v])st[v]=1,q.push(v);}}}q.push(T);while(q.size()){int top = q.front(); q.pop();for(int i=h[top];~i;i=ne[i]){if(i%2){int v=e[i];//if(!st[v])st[v]=1,q.push(v);.....}}}
}
T1
- 求解割点,限制上点,联通性边连成INF
- 思考限制在点
https://www.luogu.com.cn/problem/P1345
int main()
{Mset(h,-1);read(n); read(m); read(S); read(T);rep(i,1,n){if(i==S||i==T) add(i,i+n,INF);else add(i,i+n,1);}while (m--){int a,b,c;read(a); read(b);add(b+n,a,INF);add(a+n,b,INF);}int ans = Dinic();cout<<ans;
}
T2
网络流定义,每次走最大流,性质开到ceil
int main()
{Mset(h,-1);read(n); read(m); read(k);S = 1 ;T = n ;while (m--){int a,b,c;read(a); read(b); read(c);add(a,b,c);//add(b,a,c);}int ans = Dinic();if(ans)cout<<ans<<" "<<(int)ceil((double)k/ans);else puts("Orz Ni Jinan Saint Cow!");
}
T3
https://www.luogu.com.cn/problem/P2071
二分图最大匹配
{Mset(h,-1);read(n);S = 0;T = N-1;rep(i,1,2*n){int x,y;read(x); read(y);add(S,i,1);add(i+2*n,T,2);add(i,x+2*n,1);add(i,y+2*n,1);}int ans = Dinic();cout<<ans;
}
T3
https://www.luogu.com.cn/problem/P2740
网络流可以处理正环和重复建边
int main()
{Mset(h,-1);read(m); read(n);S = 1; T = n;rep(i,1,m){int x,y,z;read(x); read(y); read(z);add(x,y,z);}int ans = Dinic();cout<<ans;
}
错误分析
int main()
{int will[N];Mset(h,-1);read(n); read(m);S = N -1 ; /// 表示0T = N-2 ; /// 表示1rep(i,1,n){int x; read(x);will[i]=x;if(x)add(S,i,1), add(i,T,0);else add(S,i,0), add(i,T,1);}rep(i,1,m){int a,b;read(a); read(b);add(S,n+i*2,(will[a]==1) + (will[b]==1) );add(n+i*2-1,T,(will[a]==0) + (will[a]==0) );add(n+i*2,a,INF);add(n+i*2,b,INF);add(a,n+i*2-1,INF);add(b,n+i*2-1,INF);}wri(Dinic());
}
最大流,最小割刷题记录相关推荐
- ACM比赛经验、刷题记录及模板库总结(更新中)
前言 本文所提及的部分题目代码,可以在我的Github上找到 第一部分 经验分享及感受 第二部分 刷题记录 一.基础算法&程序语言 //strlen()函数的复杂度是O(n)要小心 //截取字 ...
- 重走长征路---OI每周刷题记录---6月14日 2014
总目录详见https://blog.csdn.net/mrcrack/article/details/84471041 做题原则,找不到测评地址的题不做.2018-11-28 重走长征路---OI每周 ...
- 重走长征路---OI每周刷题记录---4月12日 2015
总目录详见https://blog.csdn.net/mrcrack/article/details/84471041 做题原则,找不到测评地址的题不做.2018-11-28 重走长征路---OI每周 ...
- 网络流 最大流 最小割 费用流
[腾讯文档]网络流初步 网络流初步 文章目录 网络流初步 一.网络流简介 1. 网络 2. 流 3. 再次理解网络流 二.常见题型(三种) 三.相关问题对应算法介绍 1.最大流 (1) FF算法 - ...
- 重走长征路---OI每周刷题记录---3月22日 2014
总目录详见https://blog.csdn.net/mrcrack/article/details/84471041 做题原则,找不到测评地址的题不做.2018-11-28 重走长征路---OI每周 ...
- CSP-S集训刷题记录
$ CSP.S $ 集训刷题记录: $ By~wcwcwch $ 一.字符串专题: 1. [模板]$ manacher $ 算法 模型: 求出字符串 $ S $ 中所有回文串的位置及长度. $ sol ...
- $2019$ 暑期刷题记录 $2$(基本算法专题)
$ 2019 $ 暑期刷题记录 $ 2 $ (基本算法专题) $ by~~wch $ $ BZOJ~1958~Strange~Towers~of~Hanoi $ (动态规划,递推) 题目大意: 求有 ...
- Codeforces 刷题记录(已停更)
Codeforces 每日刷题记录 (已停更) 打'+'是一些有启发意义的题目,部分附上一句话题解,每日更新3题,大部分题目较水. Day ID Problem Tutorial Note 1 1 + ...
- 【牛客刷题记录】2021-03-10
牛客代码刷题记录1 问题一 给定一个数组序列, 需要求选出一个区间, 使得该区间是所有区间中经过如下计算的值最大的一个: 区间中的最小数 * 区间所有数的和最后程序输出经过计算后的最大值即可,不需要输 ...
最新文章
- ResNeXt——与 ResNet 相比,相同的参数个数,结果更好:一个 101 层的 ResNeXt 网络,和 200 层的 ResNet 准确度差不多,但是计算量只有后者的一半...
- 介绍理想工作计算机 英语作文,我的理想工作英语作文(精选5篇)
- Python虚拟环境virtualenv的安装与使用详解(转)
- redis的事务总结
- 玩转mini2440开发板之【如何设置开发板的网络参数】
- 十八、对已经找到轮廓的图像进行测量
- Awaken for Mac闹钟定时器
- 证明三角形内角和等于180度
- apt user manul
- 推荐系统 | (4) 可解释推荐系统---知其然,知其所以然
- linux 查找py文件命令_Linux文件查找
- 留得些许清影,幽香直到人间
- 小米手机 怪诞行为经济学
- Reactive 响应式编程简单使用
- Unity 第三方SDK框架接入 (Android Studio)
- 找工作经验——EE Master 找CS工作总结
- X-Powered-by
- openEuler | 树莓派安装openEuler-Raspi
- <Rasa实战> 内容摘要(四)
- Python之禅import this解读