2015 icpc北京赛区 D 最小割】的更多相关文章

题目大意:给你一棵技能树,如果要学习一个技能,那么它之前的技能要全部学完,第 i 个点需要ai 能学习 每条边有一个消耗c 如果支付c那么就能去掉这条边, 你还可以kejin 花费di 就能直接学习 第 i 个技能, 问你最少花费多少能学习到s. 思路:这个最小割好难想啊, 将每个点拆成两个点 i 和 i + n, 1. 如果i 和 j 之间有边那么 i + n 向 j 建一条流量为边的消耗的边. 2. i 和 i + n 建一条流量为 di 的边 3. S 向 i 建一条流量为 ai 的边 4…
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=5273 思路:二分枚举x. #include <cstdio> using namespace std; ; typedef long long LL; struct Rectangle{ int l, t, w, h; LL area; }rect[MA…
Barricade Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 997    Accepted Submission(s): 306 Problem Description The empire is under attack again. The general of empire is planning to defend his…
HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011 亚洲北京赛区网络赛题目) Eliminate Witches! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 863    Accepted Submission(s): 342 Problem Description Kaname Mado…
HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛) Panda Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1816    Accepted Submission(s): 632 Problem Description When I wrote down this letter, you may have…
//以行列建点,伞兵位置为单向边-利用对数将乘积转加法 //最小割转最大流 //Time:63Ms Memory:792K #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<algorithm> #include<queue> using namespace std; #define MAXN 105 #define INF 1…
重点:构图 //最小割转网络流 //邻接表+Dinic //Time:5797Ms Memory:6192K #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<queue> using namespace std; #define MAXN 20005 #define MAXM 500005 #define INF 0x3f3f3f…
题目链接:http://codeforces.com/gym/101149/problem/D 题目大意: 堡垒受到攻击.堡垒是n*m的矩阵,矩阵里刚开始都是平地,然后那个数值表示在当前平地上建一面墙需要a[i][j]的时间.目前我们在位置(r, c),我们找一种方法,把(r,c)全部围起来需要的最短时间? 思路:拆点,拆成in和out两个,in和out之间的cap就是a[i][j],然后就是简单的建边拉. //看看会不会爆int!数组会不会少了一维! //取物问题一定要小心先手胜利的条件 #i…
题意:有一个技能学习表,是一个DAG,要想正常学习到技能x,要将指向x的技能全部先学到,然后会有一个正常花费cx.然后你还有一种方案,通过氪金dx直接获得技能x.你还可以通过一定的代价,切断一条边.问你学得指定的技能N的最小代价. 源点向每个点连接代价为cx的边,每个点拆点,内部连接代价为dx的边,然后N向汇点连接代价为无穷的边,然后每条原图中的边的容量为切断其的代价. 容易发现,每一个割集的方案恰好对应一种学习到N的所需代价的方案.所以直接跑最小割即可. #include<cstdio> #…
题解: 好题!! 这题似乎能上我代码长度记录的前五? 调试时间长度应该也能上前五QAQ 首先题目要求的明显就是最小割,当然在整个森林上求Q次最小割肯定是会GG的,所以我们需要一个能快速求最小割的算法——最小割树. 最小割树,也叫分治最小割,就是通过预处理把原本的图缩成一颗树,树上两个节点路径上的最小边权就是它们的最小割,这个用树上倍增可以随便维护. 大概思想就是先求一次最小割,把划分出的S和T两个点集继续求最小割,向下分治然后连边缩点. 这题先对每个州预处理最小割树,州和州之间用KD树求出距离最…