随笔分类 - 图论--网络流&&费用流
摘要:题:https://ac.nowcoder.com/acm/contest/369/F 题意:n支代价为w[i]的剑,m个约束,[x,y,v0,v1,v2]同时选加上v0的额外贡献,都不选加上v1的额外贡献,只选一个减去v2的额外贡献,求最大贡献 分析:考虑总体减去最小贡献(最小割) 单考虑一对约束
阅读全文
摘要:题:https://ac.nowcoder.com/acm/problem/20951 题意:m个东西能向一段区间服务,每个点服务1的贡献,最多只能服务v次,问最多有多少个点可以被服务到 分析:朴素地讲可以把某个东西能服务到的区间上的点连接1容量的边,这个东西连接汇点v容量,点连接源点1容量,跑网络
阅读全文
摘要:题:https://codeforces.com/contest/1404/problem/E 题意:给定n*m矩阵‘#’表示要用砖头覆盖,‘.’表示不能被覆盖,只有1*x的砖头(x可任意),问在砖头不相互覆盖的前提下,最少用几块砖头能按规定把矩阵覆盖 分析: 假设一开始全部都是1*1的砖头去覆盖,
阅读全文
摘要:题:https://ac.nowcoder.com/acm/contest/5675/J 题意:给定T1,T2的有根树,问T1能最少改变多少个节点而变成根节点和T2相同,同时每个节点的父亲节点和T2一样。(要保持变换后T1节点仍是1~n出现1次),题目保证至少有一种可以转化。 分析:考虑dp[i][
阅读全文
摘要:题:http://acm.hdu.edu.cn/showproblem.php?pid=6779 题意:给定a,b,c三种饮料数目和n个人,每个人有喜欢的饮料排名,价值依次是1、2、3,(最多6种类型的人)问分配后得到的最大总价值是多少。 分析:建边:1、源点向6类人建容量为这一类人出现的数目,费用
阅读全文
摘要:题:https://ac.nowcoder.com/acm/contest/5666/H 题意:给定网络,然后每次询问给定每条边的容量ui/vi,问从节点1到节点n在流过 1 的情况下的最小费用 分析:把图的所有边容量设为1跑费用流,因为这样的话,在ui,vi条件下,可以等价为每条边乘上vi/ui,
阅读全文
摘要:题:https://www.luogu.com.cn/problem/P5038 题意:给定n*m矩阵,每个位置都有初值,每次操作是选定相邻的俩个位置都加1,问最少执行多少次操作能让所有位置的值相同 分析:相邻我们就要想到先染色,相邻不同色。假设白格nw个,总值sumw,黑格nb个,黑格sumb个;
阅读全文
摘要:题:https://ac.nowcoder.com/acm/contest/5278/L 题意:给定n个种类的事件以及每天最多做的事件次数m,每种事件都会在一周的某一天内发生且要求完成一定的次数,问最少多少天能完成? 分析:答案具有单调性,所以二分考虑,问题就变为每次二分能否达成全部完成,达成性条件
阅读全文
摘要:题:https://acm.ecnu.edu.cn/contest/255/problem/A/ 题意:有m个人在点S,要全部走的点T,题目给定每条通道每天只能走的人数,问最少几天能完成。 分析:这和最大流的水流问题很相似,只不过最大流的水流是一直会占这某一通道的,而这里只是占用了单位时间; 我们考
阅读全文
摘要:题:https://codeforces.com/contest/1082/problem/G 题意:给定有边权和点权的图,问你选一些边,然sum边-sum点最大(点权被多次用为公共点只会减一次) 分析:求最大闭合子图 选了点就要减去该点点权,选了边就加边权,然而俩点确定一边,我们可以理解为要做成一
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4309 总结:边可存东西时,可新建一个点x连接u、v,x再连向汇点; #include<iostream> #include<cstring> #include<cstdio> #include<algorithm
阅读全文
摘要:题意:选俩条除起点终点(1为起点,n为终点),所经过互不相交的路径,并要求最小cost 分析:很明显的最小费用最大流问题,最大流为路径数时2, 经验:要熟悉这种题型:“互不相交的路径”可以望网络流方向思考 #include<bits/stdc++.h> using namespace std; co
阅读全文
摘要:题意:类似二分图匹配给的题目,不过这次在这里给出了k,表示没人可以再多一次匹配机会,这次匹配不能用上一次被匹配的对象 分析:不能用匈牙利做俩次匹配,因为俩次的最大匹配并不等价于总和的匹配,事实证明,你用俩次匹配后会被卡在17个样例 既然二分图不能用匈牙利,那么只能考虑用网络流,这里讲到对于k的处理,
阅读全文
摘要:题意:给定一个无向图,删除某些边有一定的代价,要求删掉使得最短路径减小,求最小代价。 分析:首先要spfa求出起点到各个点的最短距离。对于一条权值为w,起点为i,终点为j的边,设dis[k]为起点到k点的距离,若dis[j]=dis[i]+w,则将该边加入另一个图里,边的容量为删除这条边的代价,则从
阅读全文
摘要:http://poj.org/problem?id=3228 题意:就是图上有n个点,m条边,题目给的俩个长度为n的序列,第一个是表示i位置的宝藏的体积V,第二个序列是表示i位置能容纳的宝藏体积V。然后给出m条边和权值。最终要问把这些宝藏全部放置在仓库所要走的路径中哪一条边最大(要这个最大值尽可能小
阅读全文
摘要:https://www.luogu.org/problemnew/show/P3980 源点连第一天 汇点连最后一天 容量为INF费用为0 这样跑网络流是沿时间流的(就是依次解决每一天的问题) 然后每一天向后一天连一条容量为INF-a[i] 费用为0的边 为什么容量为INF-a[i] 这就相当于少了
阅读全文
摘要:http://poj.org/problem?id=1459 题意:多组测试数据,每组测试数据给出N,Np,Nc,M。N代表结点数量,M代表边的数量,Np代表结点中电站的数量(只产电,不耗电),Nc代表消费者数量(只耗电,不产电),其他结点代表中转站(不产电,不耗电)。 接着M组(u,v)w数据,代
阅读全文
摘要:建超级s向每个食物连容量为1的边,超级汇点t; 每个饮料向t连容量为1的边,将每头牛拆点,一个连该牛喜欢的食物,另一点连该牛喜欢的饮料,俩个点相连,容量均为1; ans=跑一遍最大流 #include<iostream> #include<cstring> #include<cstdio> #inc
阅读全文
摘要:#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<queue> using namespace std; typedef long long ll; inline int read()
阅读全文
摘要:把该图的无向边随便定向,计算每个点的入度和出度。如果有某个点出入度之差为奇数,那么肯定不存在欧拉回路。因为欧拉回路要求每点入度 = 出度,也就是总度数为偶数,存在奇数度点必不能有欧拉回路; 好了,现在每个点入度和出度之差均为偶数。那么将这个偶数除以2,得x。也就是说,对于每一个点,只要将x条边改变方
阅读全文

浙公网安备 33010602011771号