第一次做最小割,不是很理解. https://www.luogu.org/problemnew/show/P1361 要把东西分进两类里,好像可以应用最小割的模板,其中一类A作为源点,另一类B作为汇点,价值就是边的容量. 然后最小割一定会割断每个中间结点的两边的其中一边,这样最大价值就顺带求出来了. 在这道题里面额外还有某些点成组出现的额外价值.题解的办法是分别虚拟两个结点代表两个集合,源点到集合a的容量是其价值,然后从a连到他的附属结点各边容量为无穷.无穷的边不能被最小割割断.所以要么是把a的…
3438: 小M的作物 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 825  Solved: 368[Submit][Status][Discuss] Description 小M在MC里开辟了两块巨大的耕地A和B(你可以认为容量是无穷),现在,小P有n中作物的种子,每种作物的种子有1个(就是可以种一棵作物)(用1...n编号),现在,第i种作物种植在A中种植可以获得ai的收益,在B中种植可以获得bi的收益,而且,现在还有这么一种神奇的现象,就…
P1361 小M的作物 题目描述 小M在MC里开辟了两块巨大的耕地\(A\)和\(B\)(你可以认为容量是无穷),现在,小\(P\)有\(n\)中作物的种子,每种作物的种子有1个(就是可以种一棵作物)(用1...\(n\)编号). 现在,第\(i\)种作物种植在\(A\)中种植可以获得\(a_i\)的收益,在\(B\)中种植可以获得\(b_i\)的收益,而且,现在还有这么一种神奇的现象,就是某些作物共同种在一块耕地中可以获得额外的收益,小\(M\)找到了规则中共有\(m\)种作物组合,第\(i\…
题目大意:有A.B两个集合和n个物品,每个物品只能放在一个集合里.每个物品放在不同集合内能获得不同价值.有一些物品,如果它们同时放在一个集合内,则会产生新的价值(A和B中都有且不一定相同(c1和c2)).有若干这样的关系.现在让你求最大总价值.解题思路:最大权闭合子图.首先拆点,把点i拆成xi和yi从S向每个xi连容量为“其放在集合A中的价值”的边,从xi向yi连容量为inf的边,从yi向T连容量为“其放在集合B中的价值”的边.对于每个关系,新建节点p1,p2.从S向p1连容量为c1的边,从p1…
裁员 [问题描述] 在一个公司里,老板发现,手下的员工很多都不务正业,真正干事员工的没几个,于是老板决定大裁员,每开除一个人,同时要将其下属一并开除,如果该下属还有下属,照斩不误.给出每个人的贡献值和从属关系,求在最大贡献值的前提下最小剩下多少人及最大贡献值.留下多少人无所谓,现在老板想知道留下的人最大的贡献值是多少. [输入描述] 第一行两个整数n,m,表示有多少个员工与多少个从属关系. 第二行n个整数,表示每个员工的贡献值. 接着m行,每行两个数x,y,表示x是y的下属,一个员工可能有多个下…
[题目描述] 天上红绯在游戏中扮演敏剑,对于高攻击低防御的职业来说,爆发力显得非常重要,为此,她准备学习n个技能,每个技能都有2个学习方向:物理攻击和魔法攻击.对于第i个技能,如果选择物理攻击方向,会增加ap_i的爆发力,如果选择魔法攻击的方向,会增加ad_i的爆发力.此外,还有一些combo,一个combo由两个技能组成,对于第i个combo,如果他们都是魔法攻击,会额外增加AD_i的爆发力,如果他们都是物理攻击,会额外增加AP_i的爆发力,如果他们不属于同一类型,会减少AX_i的爆发力.她找…
题目大意:将作物种在A,B两地,对于每种作物,种A,B分别有不同的收益,对于一些特殊的作物集合,共同种到A,B集合分别有一些额外收益.求最大收益. 题解:最小割,S向i连容量为$a_i$的边,i向T连容量为$b_i$,对于每个集合,建两个大点,把每组内的点与其连接,容量为inf,两个大点分别与原点或汇点相连,容量为$c_{i1}$和$c_{i2}$ 卡点:1.把inf的边设成了双向边 C++ Code: #include <cstdio> #include <cstring> #d…
如果没有组合效益的存在 我们直接每个点两部分的最大值即可 换成网络流模型来看 即把S点看作是A田 把T点看作是B田 每种作物看作一个点 分别连边(S,i,A[i]) (i,T,B[i]) 最后图中所有边权和减去最大流即为答案.这个很好理解,因为最小割=最大流,一种作物只能选择A,B里的一个 所以对于每个点必要删去一条边,删去的边相当于我们不要的选项 剩下的和S,T相连的边相当于我们的选择 此时删去的肯定是最小的边. 接下来我们要处理组合效应的问题. 每个组合效应有三种选择:A/B/无 这样对于每…
没想到今天早上的第一题网络流就血了这么多发 从经典的二选一问题上魔改 仍然考虑最小割 #include <bits/stdc++.h> using namespace std; #define int long long const int N = 163840, MAXN = 2602144; #define reset(x) memset(x,0,sizeof x) namespace solver { struct graph { int n,m,M,S,T,head[N],cur[N]…
题目链接 //裸最大权闭合子图... #include<cstdio> #include<cctype> #include<algorithm> #define gc() getchar() const int N=55005,M=N<<2,INF=1e8; int n,m,src,des; int Enum,H[N],nxt[M<<1],to[M<<1],cap[M<<1],q[N],lev[N],cur[N]; inl…