Codeforces 628F 最大流转最小割】的更多相关文章

感觉和昨天写了的题一模一样... 这种题也能用hall定理取check, 感觉更最小割差不多. #include<bits/stdc++.h> #define LL long long #define LD long double #define ull unsigned long long #define fi first #define se second #define mk make_pair #define PLL pair<LL, LL> #define PLI pai…
Allowed Letters 最直观的想法是贪心取, 然后网络流取check可不可行, 然后T了. 想到最大流可以等于最小割, 那么我们状压枚举字符代表的6个点连向汇点是否断掉, 然后再枚举64个本质不同的位置, 是否需要切段原点联想它的边, 单次check复杂度64 * 64 用sosdp能优化到64 * 6 #include<bits/stdc++.h> #define LL long long #define LD long double #define ull unsigned lo…
E - Goods transportation 思路:这个最大流-> 最小割->dp好巧妙哦. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define PII pair<int, int> #define PLI pair<LL, int> #define ull unsigned long lo…
[BZOJ1001]狼抓兔子 1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 18872  Solved: 4647[Submit][Status][Discuss] Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: 左上角点为(1,1),右下角点…
[题目链接] http://codeforces.com/problemset/problem/724/E [题目大意] 每个城市有pi的物品可以运出去卖,si个物品可以买, 编号小的城市可以往编号大的城市最多运送c的物品,问最多有多少物品可以被买卖 [题解] 源点向每个城市引pi的流,每个城市向汇点引si的流, 小编号的城市往大编号的城市引c的流,那么全图的最大流就是答案, 但是数据量过大,我们考虑转化. 因为最大流等于最小割,我们发现对于这个图,最后每个点不是跟s连就是跟t连, 那么我们设d…
E. ALT http://codeforces.com/problemset/problem/786/E 题意: 给出一棵 n 个节点的树与 m 个工人.每个工人有一条上下班路线(简单路径),一个工人会得到满足只要下面一项满足:1.他得到一只puppy 2.他的上下班路径上每条边都有一只doge求使所有工人满足的最小dog数并输出方案.n≤20000,m≤10000 想法:暴力建图,源点连向工人Xi,边Yi连向汇点,容量为1.然后工人向其路径上的边连容量为1的边.O(nm) 优化建图:路径为树…
Easy version:Codeforces 题面传送门 & 洛谷题面传送门 Hard version:Codeforces 题面传送门 & 洛谷题面传送门 首先看到这种从某一种颜色的点连向另一种颜色的点,要求经过的边不重复的问题,可以很自然地想到网络流,具体来说咱们建立源 \(S\) 和汇 \(T\),从源点 \(S\) 向所有红色点连容量为 \(1\) 的边,从所有蓝色点向汇点 \(T\) 连容量为 \(1\) 的边,然后将网络内部所有边都改为容量为 \(1\) 的双向边,然后跑最大…
大意: 两个n元素集合$A$, $B$, $A_i$与$A_{i+1}$连一条有向边, $B_i$与$B_{i+1}$连一条有向边, 给定$m$条从$A_i$连向$B_j$的有向边, 每次询问修改$A_x->A_{x+1}$的边权, 求$A_1$->$B_n$的最大流. 先转为最小割, B上的边不修改, 割B的最小值可以预处理出来. 若割A答案就为$min(a_i+sum_i)$…
妙啊 首先暴力建图跑最大流非常简单,s向每个i连流量为p[i]的边,每个i向t连流量为s[i]的边,每个i向j连流量为c的边(i<j),但是会又T又M 考虑最大流=最小割 然后dp求最小割,设f[i][j]为割到第i个点,有j条连着s(因为最小割中一个点不是连s就是连t),转移是 \[ f[i][j]=min(f[i-1][j]+1*j*c+p[i],f[i-1][j-1]+s[i]) \] #include<iostream> #include<cstdio> using…
题目链接 题意 给出一个n*m的酒店,每个点是一个房间,要将这个酒店的房间划分成为两块(一块无烟区,一块吸烟区),相邻的两个房间之间有一条带权边,权值代表空气锁的面积,如果把这条边给去掉,那么需要花费(空气锁的面积+开一个窗口传食物)*1000元.问需要的最少花费是多少.要注意如果面积为0,则这条边不能划分. 思路 全场做的人不多,主要看题意比较难,看懂题意就会发现是裸的最小割,但是有个面积为0的坑点.这里的边需要开的比较大,考虑到每次增加两个点,就会使边增加三条(不知道这样想对不对),于是就开…