
网络流
文章平均质量分 78
IED98
这个作者很懒,什么都没留下…
展开
-
bzoj2879: [Noi2012]美食节 最大流
题目大意:有n种菜,需求为p_i。有m名厨师,第j名厨师做第i种菜的时间为t_ij。各厨师独立做菜,最小化上菜等待时间之和。简单题解:费用流(跪翱犇)。一名厨师做的最后一个菜的时间被算了一次,第二个两次,依次类推。使用这种方式来统计答案。初始时,菜向厨师连边,表示最后一次做菜。对当前增广的厨师,新建一个点表示其前一次做菜,此时费用应为两倍;再次新建即为三倍,依次类推。原创 2015-01-07 23:44:35 · 596 阅读 · 0 评论 -
bzoj1191: [HNOI2006]超级英雄Hero 裸二分匹配
#include #include #include using namespace std; int N,M,tot=0; int map[1001][1001],vis[1001],belong[1001]; bool find(int x){ for(int i=0;i<N;i++) if(map[x][i]&&!vis原创 2015-03-20 11:34:31 · 781 阅读 · 0 评论 -
bzoj2561: 最小生成树 最大流
本题类似于2521,只不过是把加权改成了删边。同样我们只需要对规定点前的图进行流量分配求出最大流 最大流就是最少删的边数。#include #include #include #include #include using namespace std;#define maxn 444444#define INF 1000000000inline int getint(){原创 2015-03-20 11:11:29 · 714 阅读 · 0 评论 -
bzoj2521: [Shoi2010]最小生成树 最小割
把所有边都减一不就是把次边加一。。。。对答案有影响的边肯定是比指定边要小的边。所以我们要阻止制定边的两端点提前连起来。而最小代价就应该是指定边的代价+1-路径上最大边的值。然后就形成了一个路径分配问题。所以我们按 指定边的代价+1-边的权值 连边所的的答案就是最小割#include #include #include #include #include using原创 2015-03-20 11:02:09 · 1030 阅读 · 0 评论 -
bzoj1934: [Shoi2007]Vote 善意的投票 最小割
按公式构图法会发现最难处理的就是另个相邻的点颜色不同怎么处理 然后就是神奇的max(xi-xj,xj-xi)然后这一题就结束了。#include #include #include #include #include #include using namespace std;#define INF 0x3f3f3f3f#define maxn 444444int st,ed,原创 2015-03-20 10:57:28 · 608 阅读 · 0 评论 -
bzoj2095: [Poi2010]Bridges 二分+最大流
想当年第一次看到这个题是在**p的一套模拟题里?然后当时想过二分也想过最大流。然后就是没有想到一块,最后知道做法后就不了了之了。#include #include #include #include #include #include using namespace std;#define INF 0x3fffffff#define maxn 8000typedef long l原创 2015-03-20 10:35:15 · 1197 阅读 · 0 评论 -
bzoj2132: 圈地计划 最小割
继续套公式,第一次写公式的时候漏掉了都是0的情况,然后就又陷入不理解中。如果按01表示每个点转态的话很明显两个相邻的不同 很难处理(其实不难处理,可是这个题把公式变成min的时候就成了-,+的话直接相互连边就可以了)于是考虑黑白染色,然后直接套公式。套公式的确是一点技术含量都没有虽然慢但可以过。。。#include #include #include #include #inclu原创 2015-03-26 19:56:52 · 695 阅读 · 0 评论 -
bzoj2324: [ZJOI2011]营救皮卡丘 费用流
先求最短路 然后把每个点拆点。分为入点和出点,由于基地有先后顺序所以入点和出点不能直接连边。我们得在出点往入点连边。然后每个超级源向每个入点连流量为1的边,出点向每个汇连流量为1的边。0和n+1~2*n是入点。1到n是出点#include #include #include #include #include #include using namespace std;#def原创 2015-03-20 11:21:16 · 721 阅读 · 0 评论 -
bzoj2127: happiness 最小割
Description高一一班的座位表是个n*m的矩阵,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为了好朋友。这学期要分文理科了,每个同学对于选择文科与理科有着自己的喜悦值,而一对好朋友如果能同时选文科或者理科,那么他们又将收获一些喜悦值。作为计算机竞赛教练的scp大老板,想知道如何分配可以使得全班的喜悦值总和最大。Input第一行两个正整数n,m。接下来是六个矩阵原创 2015-03-26 14:09:47 · 565 阅读 · 0 评论 -
bzoj1930: [Shoi2003]pacman 吃豆豆 费用流
70分的想法很好弄,直接按坐标关系建图,可是边会有n*n条,所以必超时。满分算法是把每个点先按x排序,然后按类似于凸包的做法从每个点取最优值。贪心可以证明,假如两个点x所标相同y坐标小的能到达的个数不少于y坐标大的个数;y坐标相同x同理。所以两个路径应该都是按接近凸包上的点来走,所以路径流量为2,这样就缩小了走的范围。#include #include #include #inc原创 2015-02-05 23:16:57 · 594 阅读 · 0 评论 -
bzoj3774: 最优选择
#include #include #include #include #include using namespace std;#define INF 0x3f3f3f3f#define maxn 222222int n,m;int a[100][100],b[100][100];int dx[]={0,0,1,-1};int dy[]={1,-1,0,0};struct原创 2015-02-05 19:57:14 · 797 阅读 · 0 评论 -
bzoj2756: [SCOI2012]奇怪的游戏 二分+最大流
一个有很多细节要注意的题。。。。。交到第15发终于过了。。。。。所有的数据都要到用longlong 然后要判断最高的棍子将棋盘黑白染色,源向黑(1)连 1向四周0连 0向汇连如果n*m是偶数 那么黑位置的值之和要等于白格子的值之和(因为每加一个板子,黑白的值都加一)如果n*m是基数 那么黑棋子或白棋子多一个 d就是(sum1-sum0)/(num1-num0);#include原创 2015-01-09 23:06:50 · 731 阅读 · 0 评论 -
bzoj1061: [Noi2008]志愿者招募 费用流
首先贴个线性规划原问题模型:max c1x1+c2x2+...cnxn约束条件ai1x1+ai2x2+...ainxn>=biai1x1+ai2x2+...ainxn=biai1x1+ai2x2+...ainxnai1x1+ai2x2+...ainxn 无限制变量xi>=0 /xi 网络流对应到线性规划,笼统的讲,就是每条边的流量(而非容量)看做每个变量xi原创 2015-01-08 21:52:23 · 483 阅读 · 0 评论 -
bzoj3931: [CQOI2015]网络吞吐量 网络流
经典题目改版,直接求完最短路上最大流就行了。#include #include #include #include #include #include using namespace std;typedef long long sint;sint INF=(1LL<<42);#define maxn 222222int getint(){ char c;int r原创 2015-07-13 12:38:23 · 718 阅读 · 0 评论