[LuoguP1264]K-联赛_网络流】的更多相关文章

K-联赛 题目链接:https://www.luogu.org/problem/P1264 数据范围:略. 题解: 首先,枚举所有球队是否作为答案是必须的. 因为发现$n$实在是特别小,很容易想到网络流. 至于怎么建图,非常常规. 把比赛和球队都抽象成点. 源点$S$向每种比赛练这种比赛次数大小的容量: 每个比赛向这两个球队连边权为$inf$的容量: 每个球队向汇点$T$连这个球队和枚举球队的比赛差.…
BZOJ_3550_[ONTAK2010]Vacation&&BZOJ_1283:_序列_网络流解线性规划 Description 给出一个长度为 的正整数序列Ci,求一个子序列,使得原序列中任意长度为 的子串中被选出的元素不超过K(K,M<=100) 个,并且选出的元素之和最大. Input 第1行三个数N,m,k. 接下来N行,每行一个字符串表示Ci. Output 最大和. Sample Input 10 5 3 4 4 4 6 6 6 6 6 4 4 Sample Outpu…
题目: 洛谷 2304 LOJ 2134 (LOJ 上每个测试点有部分分) 写了快一天 -- 好菜啊 分析: 毒瘤二合一题 -- 注意本题(及本文)使用 \(x\) 向右,\(y\) 向上的「数学坐标系」,而不是 \(x\) 向下,\(y\) 向右的所谓「OI 坐标系」.「同一行」指 \(y\) 相同,「同一列」指 \(x\) 相同. 老司机 注意,只能在 没有经过的 树下转向,并且每棵树只能访问一次. 第一反应是 \(f_{u}\) 表示从点 \(u\) (树 \(u\) )出发能走到的最多的…
植物大战僵尸 bzoj1565 题目大意:给你一张网格图,上面种着一些植物.你从网格的最右侧开始进攻.每个植物可以对僵尸提供能量或者消耗僵尸的能量.每个植物可以保护一个特定网格内的植物,如果一个植物被保护,那么如果僵尸想吃掉该植物就必须先吃掉保护它的植物.问:僵尸最多能获得多少能量. 注释:1<=N(网格的宽)<=20,1<=M(网格的长)<=30,-20,000<=代价和收益<=20,000. 想法:前置题目([NOI2006]最大获利).这道题和最大获利比较相像,如…
最大获利 bzoj-1497 题目大意:可以建立一个点,花费一定的代价:将已经建立的两个点之间连边,得到一定收益.有些节点之间是不允许连边的. 注释:1<=点数<=5,000,1<=允许连边的边数<=50,000. 想法:将每个可以相连的点之间的边在网络流里建立成一个节点,将源点连这条边的收获,向这两条边的端点分别连两条inf的边,所有的端点向源点连边权为该点代价的边.然后由最大流等于最小割,求最大流即可. 最后,附上丑陋的代码... ... #include <iostre…
酒店之王 luogu-1402 题目大意:有n个人,p道菜,q个房间,每个人喜欢吃一些菜.喜欢住一些房间,如果一个人即住到了他喜欢的房间有吃到了他喜欢的菜,就对答案贡献++,求最大贡献. 注释:1<=n,p,q<=100. 想法:网络流第二题,和上一题相比有一条比较重要的限制就是每个人最多只能对答案贡献1,所以,我们对于一个相同的人加两个相同的节点,之间的流量为1.第一个人联想喜欢的菜,第二个人连向喜欢的房间,所有的菜指向源点,所有的菜指向汇点.这样每一个从源点到汇点的完整流必定为1且满足题意…
不同的最小割 bzoj-4519 Cqoi-2016 题目大意:题目链接. 注释:略. 想法: 我们发现这和最小割那题比较像. 我们依然通过那个题说的办法一样,构建最小割树即可. 接下来就是随便怎么处理都行了. 我们可以弄一个数组把枚举到的距离都记录下来即可. Code: #include <bits/stdc++.h> #define N 860 #define M 17010 using namespace std; queue<int> q; int n,head[N],to…
文理分科 bzoj-3894 题目大意:题目链接. 注释:略. 想法: 这种题也是一种套路. 我们新建一个点表示收益点. 然后把所有的收益都加一起,求最小割表示代价即可. Code: #include <bits/stdc++.h> #define inf 0x3f3f3f3f #define N 1000100 using namespace std; int to[N<<1],nxt[N<<1],head[N],val[N<<1],tot=1,dis[N…
最小割 bzoj-2229 Zjoi-2011 题目大意:题目链接. 注释:略. 想法: 在这里给出最小割树的定义. 最小割树啊,就是这样一棵树.一个图的最小割树满足这棵树上任意两点之间的最小值就是原图中这两点之间的最小割. 这个性质显然是非常优秀的. 我们不妨这样假设,我么已经把最小割树求出来了,那么这个题就迎刃而解了. 我们可以直接枚举点对,然后暴力验证就可以直接枚举出所有的合法点对是吧. 那么问题来了,我们如何才能求出所有的合法的点对? 这就需要用到了最小割树的构建过程. 我们最小割树的构…
最小生成树 bzoj-2561 题目大意:题目链接. 注释:略. 想法: 我们发现: 如果一条权值为$L$的边想加入到最小生成树上的话,需要满足一下条件. 就是求出原图的最小生成树之后,这个边当做非树边的情况下覆盖的边的最小值不可以比$L$小. 如此,我们级就可以通过网络流来求了. 对于每一条比$L$小的边,我们连双向边,求当前边$u,v$的最小割即可. 如果是最大生成树的话同理,我们只需要把所有比当前加入的边的权值小的边在网络流中连无向边,然后跑最小割即可. Code: #include <i…