
网络流
make_it_for_good
这个作者很懒,什么都没留下…
展开
-
codeforces #366 704B 704C 704D 704E
704C题意:有n个点,第i个点在位置xi,保证对于任意i#include <bits/stdc++.h>using namespace std;#define N 5100#define ll long longint n,s,e,type;int X[N],a[N],b[N],c[N],d[N];ll f[N][N];int main(){ scanf("%d%d%d",原创 2016-08-13 19:52:52 · 2050 阅读 · 2 评论 -
poj 1486 网络流+tarjan
题意:给一堆矩形和一些点,每个矩形必须对应一个点,求对应的点唯一的矩形个数。如果点在矩形内部那么从点向矩形连流量1的边,从S向点连流量1的边,从矩形向T连流量1的边。跑网络流。跑出来的东西是一种方案。将这种方案变成另一种方案只需要找到所有边剩余流量都为1的环,这样的环一定是偶环且正向边和反向边交替排列。那么把正向边流量流掉,把反向边流量退回就是一种新方案。那么只需要跑一遍tarjan,如果矩形和在网原创 2016-09-04 15:07:35 · 424 阅读 · 0 评论 -
codeforces #720 720A 720B
720A贪心,把从(0,0)开始的人按距离从小到大排序,然后按顺序枚举所有人,尽量往下,在保证这个的前提下尽量往左。 这样可以将从(0,0)开始的人都填进去,然后把空位置按到(0,m+1)的距离排序,验证一下(0,m+1)的人是否都能填进去。#include <bits/stdc++.h>using namespace std;int n,m,k,l;int v1[11000],v2[110原创 2016-09-19 13:15:00 · 1011 阅读 · 0 评论 -
bzoj 2879 [Noi2012]美食节 费用流
建图和修车是一样的,不过这题需要动态加边。注意这题费用流必须跑一条路加一条路,不能跑多条路后加边因为如果跑多条路后加边可能导致跑了不是最优的解,然后加了一条边权较小的边出现负环。 不过如果每次跑一条路加一条路可以保证每次取的都是最优解。#include <bits/stdc++.h>using namespace std;#define inf 1e9#define N 11000#def原创 2016-12-29 21:11:46 · 443 阅读 · 0 评论 -
bzoj 3630 [JLOI2014]镜面通道 计算几何 网络流
只要上下边界不连通就可以。 然后两个图形相交就连边,拆点跑网络流就行了。 判相交比较麻烦(抑或是我写得麻烦)#include <bits/stdc++.h>using namespace std;#define N 310#define inf 1e9#define eps 1e-8#define M 1100000int n,X,Y,c1,c2,cnt,S,T,tot,ans;i原创 2017-01-24 11:37:34 · 625 阅读 · 0 评论