转自 http://lbn187.is-programmer.com/posts/103404.html
巨水无比(4):
1214
3816
1000 A+B,测试一下bzoj是否好用
2462 判断一个矩阵是否在另一个矩阵中出现过,暴力求解即可。
模拟/枚举/暴力(15)
4063傻子模拟;
1968小学生暴力;
1218前缀和暴力;
3856读英文;
4106直接算;
1800暴力判断;
2208暴力判断(要会邻接表);
1028枚举;
1789&1830高能暴力;
2241暴力;
2120神奇的暴力;
4145子集暴力;
4029模拟处理;
1086DFS树;
1224暴力;
3444暴力判
人类智慧题(17)
2463输出0或1;
1192找规律;
1413奥数;
1432找规律;
4001数学;
1022简单博弈;
2005暴力数学;
2659数学;
2173找规律;
4147手推博弈;
1228SG函数打表找规律;
1045&3293中位数;
2222纯手算;
2467找规律打表;
3505组合数;
3858处理小范围
高精度Python(11)
1213高精度开根;
2656回溯高精度;
2822递推高精度;
2729组合数高精;
1002递推高精;
1089各种高精运算;
1263贪心+高精度;
1876高精度求最大公约数;
1416&1498高精算概率;
1970暴力+高精
排序/贪心/二分(10)
4143排序后判断;
3850排序后贪心;
1034贪心;
2563转化思想后排序;
3170排序后处理;
1816二分后判断;
3969二分+贪心;
1082排序后二分判断;
3671贪心+暴力
其它水(7)
3098卡哈希;3214字符串处理;2456特殊方法;2751去重;2048小范围暴力大范围乱算;3668按位处理;2660递归计算
扩展欧几里得(1):1407
线性筛/欧拉(6):
1607线性筛因数;
3288、2190、2818线性筛欧拉函数;
4173、2705logn求欧拉函数
快速幂/矩阵乘法(9)
1008快速幂;
1965、2751快速幂+快速乘;
1297、1898图上矩乘加速;
2875、2426矩阵乘法;
1875矩乘拆边构图;
1009KMP+矩乘
高斯消元/线性基(9):
1013、1923高斯消元;
3143高斯消元求期望;
3105、2460、4004拟阵+线性基;
2115找环+线性基;
2844拟阵+线性基;
2337期望高斯
置换群/Poyla(1):1004置换+背包逆元
裴蜀定理(2):2257、2299裴蜀定理
BSGS(1):2242快速幂+逆元+BSGS
卢卡斯定理(1):1951卢卡斯+孙子;2111排列组合
莫比乌斯反演(2):2301容斥+莫比乌斯反演+前缀和;3994莫比乌斯反演+前缀和
FFT(1):3527模板题
搜索(8):
1054BFS;
1024DFS;
1295暴力+BFS;
1053搜索(数学证明);
1306剪枝;
3680模拟退火裸题;
1085 A*;
2428模拟退火
最小生成树(7)
1083模板题;1821、2429裸题;1196二分+最小生成树;1050;3732+树上倍增;3624最小生成树+贪心
最短路(14):1491Floyd+统计;1003DP+最短路;4152排序后最短路;2435DFS找负环;1486DFS找负环;1001网络流->最短路;2763、2662分层图+Dijstra+堆;1880最短路+拓扑;2118转化后最短路;2165倍增Floyd;3875SPFA维护DP;2330差分约束;3436差分约束+判负环;4144Dijkstra建树处理
二分图(9):1854、1191裸题;1059、1433SB题;3175、2150最大独立点集;1562二分图求DFS序;1143Floyd+二分图;2539KM
网络流(33):这部分比较重要,每道题写出连边方法,方便以后看
1412:源点向所有羊连无穷边,羊向狼连流量为1的边,所有狼向汇点连无穷边跑最大流
1066:源点向每只蜥蜴连1的边,蜥蜴向每个能到的石柱连边,如果蜥蜴能到边界,向汇点连无穷边跑最大流
1497:裸最小割,源点向所有客户连流量为收益的边,客户向选择的中转站连边,中转站向汇点连流量为花费的边,答案即为总收益减去流量
2561:加入的边为u,v长度L,则所有长度大于L的边不能使得u,v连通,求个最小割即可,小于同理
2768、1934:源点向所有资磁切尔西的连流量为1的边,所有不资磁切尔西的向汇点连流量为1的边,然后每一对朋友互相连流量为1的边,跑最大流即可
4177:源点向所有i连一条流量为ai的边,表示养牛;所有i向汇点连一条流量为bi的边,表示养羊;对于每条规则(i,j,k),i和j之间互连流量为k的边;对于每个(S,a,b),新建一个节点,如果a表示养牛,源点向该节点连流量为b的点,该节点向S中所有点连流量无穷的边;如果a表示养羊,该节点向汇点连流量为b的点,S所有点向该点连流量无穷的点,答案即为Σa[i]+b[i]-流量
3504:正向跑一遍,反方向再跑一遍最大流,判断即可
2007:懒得看了、、似乎网络流的话要姿势比较好,应该是最短路
3931、1266:最短路判断每条边是否可能在最短路上,若可能则加入,变成最小割模型,跑最大流即可
1565:如果A保护B,那么就连一条A–>B的边,然后对这个图做拓扑序,把环给去掉,然后对剩下的点建图,如果A保护B则连一条B–>A流量为无穷大的边,如果A的点权>0则连一条S–>A流量为A的点权的边,如果A得点权<0则连一条A–>T流量为A的点权的绝对值的边,就变成了最小割模型,用sum-流量即可
2039:源点向每个员工连流量为收益的边,每两个员工之间连Ei,j*2的边,每个员工i再向汇点连ΣEi,j的边,得到最小割模型,答案即为sum-流量
1797:首先求一个最大流。有可能在某个最小割中的边(u,v):满流,删掉之后在残余网络中找不到u到v的路径。一定在所有最小割中的边(u,v):满流,s出发沿残余网络能到u,v出发沿残余网络能到t。在残余网络中tarjan求强连通分量。(u,v)两点在同一SCC中说明残余网络中存在u到v路径。s和u在同一scc说明s能到u,t和v同一scc说明v能到t。
1305:二分答案ans,每个男孩拆成两个点ai和ai’,每个女孩拆成两个点bi和bi’,源点向每个ai连一条流量为ans的边,每个bi向汇点连一条流量为ans的边,如果男孩i喜欢女孩j,ai向bi连一条流量为1的边,否则ai’向bi’连一条流量为1的边,每个ai向ai’连一条流量为k的边,表示最多和k个不喜欢的女孩跳舞;每个bi’向bi连一条流量为k的边,如果流量=ans*n则可行,l=mid+1,否则r=mid
1189:二分答案time,源点向每个人连流量为1的边,把门拆成若干个点,表示在t时刻可以通过1人,每个点向汇点连流量为1的边,人向每个time时间内能到达的门连边,跑最大流判断是否能让所有人通过即可
3993:二分答案ans,源点向每个B连ans*b[i]的边,B向每个能打到的A连无穷边,A向汇点连a[i]的边,若流量等于Σa[i]则符合条件,向下面找,否则向上面找
3158&3275:发现两两关系只会发生在奇数特征值和偶数特征值的点之间,源点向所有偶数特征值的点连流量为价值的边,所有奇数特征值的点向汇点连流量为价值的边,所有偶数特征值的点向有冲突的奇数特征值的点连流量无穷的边,就变成最小割模型,答案为所有收益-流量
1061:神奇的建图,用单纯形做简单点、
2245:源点向每类产品连流量为Ci的边,每类产品向能生产该产品的员工连无穷边,每个员工在每一段上向汇点连t[i]-t[i-1]流量w[i]费用的边,跑费用流即可
1927:拆点,源点向i连一条流量为1,费用为0的边,向i’连一条流量为1,费用为ai的边,i’向汇点连一条流量为1,费用为0的边;对于每条通道x,y,z,假设x 3171:拆点,如果相邻两点可以通达,i向i’连一条流量为1,费用为0的边,否则连一条流量为1,费用为1的边,源点向每个i连一条流量为1的边,所有i’向汇点连流量为1的边,然后跑费用流 2424:拆点,源点向i连一条流量无穷,费用di的边,表示订货,i向i’连一条流量无穷费用为0的边,所有i’向汇点连流量ui费用0的边表示卖出,所有i向i+1连一条流量S费用m的边表示存储费用,然后跑费用流 3130:第一问裸流,第二问二分答案,每条边的流量为min(z[i],now),如果仍然能满足最大流等于原来值,那么r=mid,否则l=mid+1 1834:第一问裸流,第二问直接在剩余网络上做费用流 3876:对于每一条边权为z的边x->y:从S到y连一条费用为z,流量为1的边 代表这条边至少走一次,从x到y连一条费用为z,流量为INF的边 代表这条边除了至少走的一次之外还可以随便走。对于每个点x:从x到T连一条费用为0,流量为x的出度的边,从x到1连一条费用为0,流量为INF的边,代替原图上的源和汇 1877:拆点,源点为1’,汇点为n,对于每个i和i’连一条流量为1费用为0的边表示只能走一次,对于每条有向边(x,y,z)从x’向y连一条流量为1,费用为z的边,然后跑费用流即可 1221:拆点,源点向每个i连一条流量无穷费用f的边表示直接买毛巾,每个i向i’连一条流量无穷费用0的边,每个i’向t连一条流量为ni费用0的边,表示需要的毛巾;每个i’向i+a连一条流量无穷费用fa的边,表示快洗;每个i’向i+b连一条流量无穷费用fb的边,表示慢洗 1070:把M个技术人员拆成N个点,第w个点表示给第w个顾客修车时所有顾客需要多等待的时间,每个顾客j向每个技术人员mi连一条流量为1,费用为k*a[j][i]的边,表示每个顾客对后面顾客造成的影响;源点向每个顾客连流量为1的边,每个拆出来的技术人员向汇点连一条流量为1的边 2849:和上题差不多,不过每条边要动态加,否则要T 1449:假设后面M场比赛两方都是输的,对于后面每场比赛,每赢一场的收益增加值add=c[i]-(win[i]+1)2+d[i]-(lose[i]-1)2-[c[i]-win[i]2+d[i]-lose[i]2=2*win[i]c[i]-2lose[i]*d[i]+c[i]+d[i],之后win[i]++,lose[i]–。源点向每场比赛连流量为1,费用为0的边,每场比赛向双方连流量为1,费用为0的边,每支球队按照上述方法连每条边,然后求出费用加上原来收益即可 2668:对于每个点一分为三,分为p0,p1,p2,对于每个点, 如果它是原图中得黑点,连边 这样就可以体现出点容量的差异了。 拓扑(3):4010最小拓扑序;2535&2109拓扑逆向加边 tarjan(5):1051:直接tarjan判断强连通分量个数是否为1;2438:缩点后,ans=入度为0的连通块个数,倘若存在只有一个点的连通块,它无出边或出边指向的点均能被其它点到达则ans-1;1179:缩点后求点权最长路;1093缩点后DP统计方案;1823 2-SAT 树(11):2783树上DFS+倍增;1509树上最长链;1912两次树上最长链;2657奇怪构图后树上最长链;1787LCA;2152点分治;3991虚树动态统计;2286、3572虚树DP;1005、1211Prufer编码 字符串/计算几何/博弈论/其他(19) KMP(2):3670KMPnext维护;3620暴力+KMP AC自动机(4):3172模板题;1212AC自动机+DP;1030AC自动机+DP;1444AC自动机+矩乘 后缀数组(2):1031基本题;3238后缀数组+单调栈 后缀自动机(3):3998第K小子串;2754广义后缀自动机;3926暴力Tire构建广义 后缀树(1):4199后缀树裸题 凸包(1):1027凸包+最短路 随机增量(2):2823最小圆覆盖;3564转化后最小圆覆盖 博弈论(1):1188SG函数 三分(3):3330三分套三分+保留位数输出;1857三分套三分;3874单调性贪心+三分 DP(71) 基本DP(31):2748小学题;1088初一题;1207初二题;1037初三题;1296、1260基本区间DP;1025筛DP;1197SB题;1084选择DP;1032错误DP;1055区间DP;1042背包DP+容斥;1806多维DP;1237递推;1925、2431DP+前缀和优化;3174贪心+DP;1566滚数组DP;2423推方案DP;1899递推;1222神奇转化降维;1801状压DP转化;1046DP+贪心;1991区间推DP;1044二分+DP;1786、1831猜想后DP;1057悬线法;2298转化为取区间;1966、3191DP 树形DP(8):1864树形DP,加0或1记染色方案;1060、4027、1304、4011+朱刘;1040环+外向树;1791基环树找直径;2878基环树判环DP+暴 数位DP(2):1029基本数位DP;1833较复杂处理;3209二进制数位DP 记忆化(6):1048、1079、3208记忆化;1090(区间);1564(区间);1415(期望);3810记忆化+卡常 期望DP(4):1076、4004倒着DP;2134、4008; 状态压缩(4):1072、2560子集DP;1087状压DP;4197小范围状压 单调性(2):1499单调队列优化;1563单调性优化 斜率优化(7):1010、1911、3437模板题;1096两个前缀和;3156;1567排序+斜率;3675多维斜率优化 其它优化(3):1264、3594树状数组优化;1492CDQ分治优化
如果它是新图中得黑点,连边
如果它在两个图中都是白点,那么连边
然后对于原图中可以交换的两个点(i,j)连接
那么这种边每流过1的流量就意味着(i,j)交换了一次,那么费用就是最终的答案了。