随笔分类 - 网络流—最小割
摘要:方案二选一,显然是最小割,朴素的想法就是一排人点一排边点,分别向st连流量1的边,然后人点向路径上的边点连流量inf的边跑最大流 但是路径可能很长,这样边数就爆了,所以考虑倍增,然后倍增后大区间向小区间连,这样路径只要连向log个区间就行了,然后跑最大流 输出方案是在残量网络上从s点沿着没满流的边b
阅读全文
摘要:有正负收益,考虑最小割 因为有依赖关系,所以考虑最大权闭合子图 首先对每个d[i][j]建个点,正权连(s,id[i][j],d[i][j])并加到ans上,负权连(id[i][j],t, d[i][j]) 然后选了大区间一定会选小区间,连这样的依赖关系:(id[i][j],id[i+1][j],i
阅读全文
摘要:上来就跑3e5的最大流……脑子抽了 很容易看出,每个地方的海拔都是0或1因为再高了没有意义,又,上去下来再上去没有意义,所以最后一定是从s连着一片0,剩下连着t一片1,然后有贡献的就是01交接的那些边 跑个最小割就好了 然而跑不过,考虑建对偶图,也就是网格的空当成一个点,然后这些点之间互相连边的权值
阅读全文
摘要:一开始在https://www.cnblogs.com/lokiii/p/10770919.html基础上连(i,j,b[i][j])建了个极丑的图T掉了……把dinic换成isap勉强能卡过 首先因为有正负收益所以考虑最小割,先ans=Σb,然后考虑负收益 把割完后和s相邻的视为不选,反之视为选,
阅读全文
摘要:把转置矩阵看成逆矩阵吓傻了233 首先按照矩乘推一下式子: $$ D=\sum_{i=1}^n a[i] (\sum_{j=1}^n a[j] b[j][i]) c[i] $$ $$ D=(\sum_{i=1}^n \sum_{j=1}^n a[i] a[j] b[j][i]) (\sum_{i=1
阅读全文
摘要:这个条件非常妙啊,奇数和奇数一定满足1,因为\\( (2a+1)^2+(2b+1)^2=4a^2+4a+4b^2+4b+2=2(2(a^2+a+b^2+b)+1) \\)里面这个一定不是平方数因为除二后是个奇数不能再分一个2出来;偶数和偶数一定满足2,因为gcd =2 考虑最小割,先加上所有收益然后
阅读全文
摘要:無意識のカウンターイルミネーション
嘘つきは誰?
阅读全文
摘要:枚举建图.jpg 一开始建的图挂了,于是枚举了几种建图方式…… 因为要删点,所以拆点,连接(i,i',1),对于原来图上的边(u,v),连接(u',v,inf),(v',u,inf),然后连接(s,i',inf),对于不能和1相连的点x,建边(x,t,inf) 跑dinic即可 原因的话,~~枚举出
阅读全文
摘要:参考:https://www.cnblogs.com/neighthorn/p/6705785.html 并不是黑白染色而是三色染色(还有四色的,不过是一个意思 仔细观察一下不合法情况,可以发现都是特殊边两边有格子并且两个黑格子都在的时候黄蓝不能同在,所以(黄 黑)(黑 蓝)(黑 黑)都是最大权闭合
阅读全文
摘要:看错题了以为多组询问吓得不行…… 其实还挺好想的,就是数据范围一点都不网络流。把U作为s,V作为t,以最小生成树为例,(U,V,L)要在最小生成树上,就要求所有边权比L小的边不能连通(U,V)所在的联通块。这样一来模型就很显然了,就是对所有边权 include include include inc
阅读全文
摘要:同方格取数问题:https://www.cnblogs.com/lokiii/p/8430720.html 记得把障碍点去掉,不连边也不计入sum cpp include include include include using namespace std; const int N=100005,
阅读全文
摘要:因为都是正整数,所以当然取得越多越好。先把所有点权加起来,黑白染色后,s向所有黑点连流量为点权的边,所有白点向t连流量为点权的边,然后黑点向相邻的四个白点连流量为inf的边,表示不可割,这样一来,对于一条链上的s u v t,只能割掉u的点权或者v的点权,那么最小割就是用最小的代价是st分开,也就是
阅读全文
摘要:……一道难在读入的题。 最后解决方案直接getline一行然后是把读优拆掉放进函数,虽然很丑但是过了。 然后就是裸的最大权闭合子图了,把仪器当成负权点向t连流量为其价格的边,s向实验连流量为实验报酬的边,实验向所有它所需要的仪器连流量为inf的边表示不可割断。然后跑最大流即可。 关于输出方案,直接看
阅读全文
摘要:直接建图比较显然,是(s,i,w),(i,t,b),(i,i',p),(i,j,inf),然而建出来之后发现边数是n方级别的,显然跑不过去,然后就有一种比较神的思路:把a离散了建一棵权值线段树,然后要连的j直接放到一个区间内。然而题目又要求j include include include incl
阅读全文
摘要:s向所有信仰1的人连(s,i,1),所有信仰0的人连(i,t,1),对于朋友关系,连接双向边,流量为1。跑最大流的结果即为答案。 考虑这样做的意义。最小割就是把总点集分割为两个点集S,T,使得所有\\(u\in S,v\in T,val(u,v) \\)的值最小。也就是说,在这道题中的意义就是使最少
阅读全文
摘要:因为是异或运算,所以考虑对每一位操作。对于所有已知mark的点,mark的当前位为1则连接(s,i,inf),否则连(i,t,inf),然后其他的边按照原图连(u,v,1),(v,u,1),跑最大流求最小割。然后从s沿着有剩余流量的边dfs,把dfs到的点都与(|)上1,因为是与,所以即使操作到了已
阅读全文
摘要:~~拆点拆魔怔了~~ 直接按照原图建就行,这里有个小技巧就是双向边的话不用按着板子建(u,v,c)(v,u,0)(v,u,c)(u,v,0),直接建(u,v,c)(v,u,c)会快十倍!800ms 80ms,建完之后跑一遍dinic,然后从s顺着有残余流量的正向边dfs打标记fr并且计数ss,从t顺
阅读全文
摘要:就是求哪些边在最大流上满流,也就是找割边。把0作为t点,s向所有的1~n连流量为inf的边,其他的边按照流量连。跑一遍最大流,从s顺着有残余流量的正向边dfs打标记fr,从t顺着正向边有残余流量的反向边dfs打标记to,那么满足条件的边就是两端点分别有fr和to标记并且满流(这里只考虑正向边),因为
阅读全文
摘要:网络流的题总是出各种奇怪的错啊……没写过邻接表版的dinic,然后bfs扫到t点不直接return 1就会TTTTTLE…… 题目中的操作是“去掉人”,很容易想到拆点,套路一般是(s,i')(i,t)(u',v)(v,u),然后关于输出顺序最小方案,可以枚举删点,如果删去一个点后求得最小割比原来的小
阅读全文

浙公网安备 33010602011771号