网络流
Cyhlnj
这个作者很懒,什么都没留下…
展开
-
[Shoi2007]Vote 善意的投票
题目描述幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉。对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神。虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可以投和自己本来意愿相反的票。我们定义一次投票的冲突数为好朋友之间发生冲突的总数加上和所有和自己本来意愿发生冲突的人数。我们的问题就是,每位小朋友应该怎样投票,才能使冲突数最小?输入输出格式输入格式:文件的第一行只有两个原创 2017-12-27 16:40:40 · 265 阅读 · 0 评论 -
luogu2402 奶牛隐藏
题目描述在一个农场里有n块田地。某天下午,有一群牛在田地里吃草,他们分散在农场的诸多田地上,农场由m条无向的路连接,每条路有不同的长度。 突然,天降大雨,奶牛们非常混乱,想要快点去躲雨。已知每个田地都建立有一个牛棚,但是每个牛棚只能容纳一定数量的牛躲雨,如果超过这个数量,那多出的牛只能去别的田地躲雨。奶牛们每移动1的距离花费1时间,奶牛们想知道它们全部都躲进牛棚,最少需要多少时间。(即最后一头奶牛原创 2017-12-27 20:27:19 · 277 阅读 · 0 评论 -
[USACO09MAR]地震损失2Earthquake Damage 2
题意一共有P个牧场.由C条双向路连接.两个牧场间可能有多条路.一条路也可能连接相同的牧场.牛棚坐落在牧场1.N (1 <= N <= P) 只奶牛打来了求救电话,说她们的农场没有被摧毁,但是已经无法到达牛棚. 求出最少可能有多少牧场被摧毁.求最小割 没有被摧毁的连INF 注意这里的是点,要拆成两个才能转化成边(因此WA了几次)# include <bits/stdc++.h># define原创 2017-12-29 09:36:53 · 314 阅读 · 0 评论 -
[ZJOI2009]狼和羊的故事
裸的最小割然而我还是太菜了,没看见有零的格子,WA了两遍# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))# define Copy(a, b) memcpy(a, b, sizeof(a))# define ID(a, b) (原创 2017-12-29 09:57:45 · 355 阅读 · 0 评论 -
【ZJOI2010】网络扩容
费用流+最大流 先一遍最大流 再所有边扩容,新加节点限制扩容量k# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))# define Copy(a, b) memcpy(a, b, sizeof(a))# define ID(a原创 2017-12-29 10:35:15 · 229 阅读 · 0 评论 -
[HNOI2013]切糕
最小割让相邻的最小割上的点层数差小于等于d,也就是大于d时S,T仍然能相通 那么可以从下面d层向上面相邻的点连容量为INF的边 表示相邻的最小割上的点层数差大于d时,还能走这条INF边回来,流其它的路到T,这样就强制要小于等于d了# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b原创 2017-12-29 11:31:07 · 233 阅读 · 0 评论 -
Luogu[POI2005]KOS-Dicing
题面二分后用网络流判定 S->人,流量为二分的mid 人->比赛,流量为1 比赛->T,流量为1 输出方案只要判断a就可以了# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))# define Copy(a, b) memcp原创 2017-12-29 17:39:21 · 236 阅读 · 0 评论 -
[BZOJ2127]happiness
题面戳我Solution一般这种题就转化成最小割做 把最大收益转化成最小损失,先把所有收益加入ans考虑建图,设S集合为选文的,T为选理的 单个选的比较简单,就直接连就好了: 直接令容量(S,x)=选文科的收益,(x,T)=选理科的收益即可。 那么两个一起选的怎么连? 设两个人x,y,他们俩一起选文的收益是a,一起选理的收益是b。 四原创 2018-01-08 15:20:47 · 256 阅读 · 0 评论 -
Bzoj2132: 圈地计划
题面戳我Solution一般这种有两种选择的题都可以转化成最小割来做 所以我们先把所有的代价累加,求最小损失考虑第一二种代价,分S,T连就好了。。。 连完你会发现,第三种怎么连??? 要求在同一块儿的损失,怎么用连边表示??这个时候只能Orz Zsy大佬了 不同类相邻的格子 看到相邻我们想到黑白染色 那么S只连黑色的某区的边和白色的不同区的边,T相反 相邻的黑白点原创 2018-01-08 17:17:25 · 429 阅读 · 0 评论 -
CF903G Yet Another Maxflow Problem
题面一张图分为两部分,左右都有nnn个节点, Ai−>Ai+1Ai−>Ai+1A_i->A_{i+1}连边,Bi−>Bi+1Bi−>Bi+1B_{i}->B_{i+1}连边,容量给出 有mmm对Ai−>BjAi−>BjA_i->B_j有边,容量给出 两种操作 1.修改某条Ai−>Ai+1Ai−>Ai+1A_i->A_{i+1}的边的容量 ...原创 2018-03-17 17:20:13 · 368 阅读 · 0 评论 -
Bzoj5251: [2018多省省队联测]劈配
题面传送门Sol网络流辣枚举每个点的最优匹配,然后只建最优匹配的边跑网络流 下一个点的图中,保证上一个点只连了最优匹配的边 直接整个图复制过来然后二分答案一个点向上跳多少 和上面一样建图checkcheckcheck# include <bits/stdc++.h># define RG register# define IL inline#...原创 2018-04-09 17:00:15 · 304 阅读 · 0 评论 -
BZOJ2229: [Zjoi2011]最小割(最小割树)
传送门最小割树算法初始时把所有点放在一个集合从中任选两个点出来跑原图中的最小割然后按照 sss 集合与 ttt 集合的归属把当前集合划分成两个集合,递归处理这样一共跑了 n−1n − 1n−1 次最小割可以证明图中任意一对点之间的最小割的数值都包含在这 n−1n − 1n−1 个数值当中把每次求出的最小割看成是两个点之间的边,可以建出一棵树定理1任意三点之间的最小割一定是两个相...原创 2018-12-09 14:40:05 · 417 阅读 · 1 评论 -
[SDOI2013]费用流
然而这是一道网络流。。。如果满足Bob,使总费用最大: 设最大流的边流量(不是容量)为w[i],分配到每条边的费用为p[i],最大流量为wmax,p[i]的和为P 那么显然w[i] * p[i]的和小于等于wmax * P 证明: wmax∗P=∑wmax∗p[i].....................(1)wmax * P = \sum wmax * p[i].............原创 2017-12-28 22:34:06 · 198 阅读 · 0 评论 -
[SCOI2007]蜥蜴
网络流 一个点拆成两个,注意要把某一类边连反过来 这样才能保证有限制# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))# define Copy(a, b) memcpy(a, b, sizeof(a))# define ID原创 2017-12-28 21:39:34 · 170 阅读 · 0 评论 -
BZOJ1001 狼抓兔子
最小割RE代码不给AC的# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))# define Copy(a, b) memcpy(a, b, sizeof(a))# define ID(a, b) (a - 1) * m + bu原创 2017-12-28 19:36:39 · 308 阅读 · 0 评论 -
[CQOI2009]dance跳舞
每个人拆成两个点,一个表示接受喜欢的,一个表示不接受喜欢的,(男yes,男no,女yes,女no) 男yes->男no,容量为k;女no->女yes,容量为k 男女喜欢,则男yes->女yes,容量为1 否则男no->女no,容量为1二分歌曲x,S->男yes,容量为x;女yes->T,容量为x 若最大流==n*x则满足要求# include <bits/stdc++.h># define原创 2017-12-27 17:26:22 · 213 阅读 · 0 评论 -
Marriage Match IV HDU - 3416
题意给你n个点,m条边,要求每条边只能走一次的最短路径的个数题解在我又WA又TLE还RE时,yyb大佬告诉我说要跑两遍SPFA,还说我写的一遍SPFA是错的,然而 啪啪打脸。。。 而且他的 比我跑得慢,2333 接下来讲一下方法 首先一遍SPFA(或dijkstra)从S跑一遍到所有点的最短路,重新建图时对于每对u, v 若 dis[u] + w[u][v] == dis[v] 则原创 2017-07-29 20:12:47 · 339 阅读 · 0 评论 -
luogu1402 酒店之王
题目描述XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化。由于很多来住店的旅客有自己喜好的房间色调、阳光等,也有自己所爱的菜,但是该酒店只有p间房间,一天只有固定的q道不同的菜。有一天来了n个客人,每个客人说出了自己喜欢哪些房间,喜欢哪道菜。但是很不幸,可能做不到让所有顾客满意(满意的条件是住进喜欢的房间,吃到喜欢的菜)。这里要怎么分配,能使最多顾客满意呢?输入输出格式输入格式:原创 2017-12-27 19:18:35 · 334 阅读 · 0 评论 -
[USACO5.4]奶牛的电信Telecowmunication
裸的最小割,拆点时要考虑清楚到底是怎么连 如果之前i->i+n,之后又x->y+n,显然出不了解 所以可以改为i+n->i如果要输出方案考虑每一个一个点,如果删去这个点,最小割变小了,那么这个点就是所求点。不输出方案的代码# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) me原创 2017-12-27 22:30:03 · 264 阅读 · 0 评论 -
luoguP2711 小行星
题目描述星云中有n颗行星,每颗行星的位置是(x,y,z)。每次可以消除一个面(即x,y或z坐标相等)的行星,但是由于时间有限,求消除这些行星的最少次数。输入输出格式输入格式:第1行为小行星个数n,第2行至第n+1行为xi, yi, zi,描述第i个小行星所在的位置。输出格式:共1行,为消除所有行星的最少次数。输入输出样例输入样例#1:31 2 32 3 11 3 2输出样例#1:2说明1≤原创 2017-12-27 22:09:36 · 243 阅读 · 0 评论 -
星际转移问题
S向地球连k的边,每天每个地方由上一天连INF边,每天月亮向T连边 枚举天数获取每天飞船的位置,由上一天的位置向这一天连满载的边 跑到人都送完位置,在合适的时候(玄学)break输出无解# include <stdio.h># include <stdlib.h># include <iostream># include <string.h># include <math.h># de原创 2018-01-02 20:38:40 · 243 阅读 · 0 评论 -
方格取数问题
又是套路啊 黑白染色,S,T连不同色的,求最小割,用总和-最小割即为答案# include <stdio.h># include <stdlib.h># include <iostream># include <string.h># include <math.h># define ll long long# define RG register# define IL inline原创 2018-01-02 20:24:18 · 261 阅读 · 0 评论 -
骑士共存问题
套路啊 棋盘黑白染色,S连黑,白连T,黑白间根据骑士的走法连边,求出最小割 最大独立集=点数-最小点覆盖;最小点覆盖=最大流=最小割# include <stdio.h># include <stdlib.h># include <iostream># include <string.h># include <math.h># define ll long long# define原创 2018-01-02 20:22:05 · 296 阅读 · 0 评论 -
太空飞行计划问题
最大权闭合子图:等于正边权 - 最大流(最小割) 我的理解 最大收益就是要求最小损失,那么用最小割模型(别问我是怎么想到的) S向实验连边,表示割掉这条边,把实验割给T会有损失 T向配置连边,表示割掉这条边,把配置割给S会有损失 跑出的最小割(最大流)就是损失# include <stdio.h># include <stdlib.h># include <iostream># in原创 2018-01-02 20:11:03 · 224 阅读 · 0 评论 -
魔术球问题
枚举放的球,先假设新建柱子,拆成两个点,第一个点连S,表示后面还可以放;第二个连T表示放到其他柱子上;再枚举放过的数和它是否组成完全平方数,枚举的数的第一个点向它的第二个点连边,表示这个球可以放到其他球上 每次跑最大流出来的表示会消掉的柱子个数,如果此时球-消去的比n大则break输出答案# include <stdio.h># include <stdlib.h># include <ios原创 2018-01-02 20:02:24 · 281 阅读 · 0 评论 -
[SDOI2015]星际战争
水题啦网络流+二分 误差才10^-3,乱搞直接开longlong暴力每个都乘1000,输出时除一下就好了# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))# define Copy(a, b) memcpy(a, b, sizeo原创 2017-12-28 15:30:11 · 245 阅读 · 0 评论 -
[HEOI2016]游戏
二分图匹配(网络流实现)# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))# define Copy(a, b) memcpy(a, b, sizeof(a))using namespace std;typedef long l原创 2017-12-28 17:35:19 · 363 阅读 · 0 评论 -
BZOJ1443: [JSOI2009]游戏Game
传送门这个博弈类似放骨牌,参见这道题所以就可以黑白染色之后跑二分图最大匹配,其中的不必匹配的点就是答案这些点是什么呢,yyyyyy 一下发现貌似就是残余网络中与 sss 或 ttt 在同一个强连通分量的点?# include &lt;bits/stdc++.h&gt;using namespace std;typedef long long ll;const int maxn(10...原创 2019-01-15 11:36:08 · 241 阅读 · 0 评论