摘要:
最小费用最大流,因为要控制字典序,网络流控制不好了...一直WA,所以用了费用流,时间早的费用大,时间晚的费用少。构图:建立一个超级源点和超级汇点。超级源点连向1操作,容量为K,费用为COST,然后COST-1,因为下一次遇到1操作,费用为减少1,即COST-1;每个1操作连向当前能建造的城市,容量... 阅读全文
摘要:
历时好几天,终于完工了!支持无向图四种功能:1.割点的求解2.割边的求解3.点双连通分量的求解4.边双连通分量的求解全部支持重边!!!!全部支持重边!!!!全部支持重边!!!!测试数据:10 111 53 54 52 42 34 66 86 77 88 108 9/*By:ZUFE_ZZT该模板经过... 阅读全文
摘要:
Tarjan算法求解割点#include#include#include#include#includeusing namespace std;const int maxn=1111;//有多少个结点vectorG[maxn];int visited[maxn];//标记该节点有没有访问过int n... 阅读全文
摘要:
可以转化成最小割的求解,题目其实就是要求把点分成两个集合,增加一个超级汇点,一部分的点在根节点所在集合内,一部分节点在超级汇点所在的集合内,这两就分开了,又要求费用最小,那么就是最小割。#include#include#include#include#include#include#includeu... 阅读全文
摘要:
树形DP#include#include#include#include#includeusing namespace std;const int maxn=6666;int Ch[maxn];int dp[maxn][2];int n,u,v,node,tot;vector G[maxn];voi... 阅读全文
摘要:
二分图的最大匹配。课程和时间可以看做二分图。#include#include#include#includeusing namespace std;const int MAXN=505;int nx,ny;int g[MAXN][MAXN];int cx[MAXN],cy[MAXN];int mk[... 阅读全文
摘要:
求有几个割点。数据比较水,用了朴素方法。。。30ms。。。#include#include#include#include#includeusing namespace std;char s[1000000];int n,u,v,tot,len,sum;const int INF=0x7FFFFFF... 阅读全文
摘要:
脑洞题。开个数组记录一下每个点的左边部分的和右边部分的和。只要知道第一个点和最后一个点的情况,其余的点的情况可以再o(n)的效率下推导出来。#include#include#include#includeusing namespace std;const int maxn=10000;long lo... 阅读全文
摘要:
树状数组+离线操作#include#include#include#includeusing namespace std;int N,M;int SUM1,SUM2,SUM3,SUM4;int C[500000+20];struct Point{ int x,y,PD,ans,id,BiX,B... 阅读全文
摘要:
二分图的最大匹配地鼠内部和地鼠洞内部都是没有边相连的,那么就可以看成一个二分图。地鼠如果可以跑到那个地鼠洞,就连一条边,然后跑二分图的最大匹配,最后地鼠的数量减去最大匹配数就是答案。#include#include#include#includeusing namespace std;const i... 阅读全文
摘要:
判断最小生成树是否唯一:先求一遍MST,每次删去MST的一条边,求MST,如果发现有一次求出来的权值之和和一开始的一样,那么就不唯一了。#include#include#include#includeusing namespace std;const int maxn=111;int n,m;str... 阅读全文
摘要:
答案就是最小生成树中权值最大的边#include#include#include#includeusing namespace std;const int maxn=505;struct Edge{ int from,to,w;} edge[250000+10];int n,ans;int G... 阅读全文
摘要:
SPFA水题。记录一下到这个结点的最大承载能力。因为一个小错误而WA了一晚上,悲催,T_T......#include#include#include#include#include#includeusing namespace std;const int maxn=1000+10;struct E... 阅读全文
摘要:
/*http://acm.hust.edu.cn/vjudge/contest/view.action?cid=71805#problem/C*/性质:【1】二分图最大点独立数=顶点数-二分图的最大匹配【2】二分图最小点覆盖数=二分图的最大匹配这个题目就是求最大点独立集,根据性质【1】可以求解。对于... 阅读全文
摘要:
区间DP#include#include#include#includeusing namespace std;char s[1000];int dp[105][105];int main(){ int i,j,k; while(~scanf(" %s",s)) { ... 阅读全文
摘要:
大致思路就是运用SPFA,不断地求解最小费用的一条从原点到汇点的路径,然后增广一次;直到不能增广了,那么就得到了答案。#include#include#include#include#include#includeusing namespace std;//设置节点数量const int maxn=... 阅读全文
摘要:
没有源点和汇点、流量有上下界的网络可行流问题。今天看了一下午的有上下界的网络可行流问题,在似懂非懂、非常朦胧的状态下过了这个题...激动了半天。求解的方法:http://www.cnblogs.com/zufezzt/p/4681035.htmlAC代码:#include#include#inclu... 阅读全文
摘要:
之前涉及到的网络流问题,每条弧的容量下限都是0,上限都是C。而在流量有上下界的网络流问题中,每条弧有一个流量下界low,还有一个上界up。对于这样的问题,一般都三类:1.没有源点和汇点的有上下界的可行流问题2.有源点和汇点的有上下界的网络最大流问题3.有源点和汇点的有上下界的网络最小流问题第一类问题... 阅读全文
摘要:
由网络最大流最小割定理可以很容易的知道,最小割在数值上是等于最大流的。【1】如果题目要求的是最小割的数值,那么只要跑一遍网络最大流即可得出答案。【2】如果要求的是S集合和T集合,那么先跑一遍网络最大流,然后在跑完网络最大流的残留网络中,从源点Vs开始进行DFS,能遍历到的节点都属于S集合,最终,剩下... 阅读全文
摘要:
我的方法是将题目中给的那个串(anniversary)拆分成三段。枚举所有情况,也就100多种的样子。每一种情况去判断在输入的串中能不能找到这三个串,并且不相交。o(︶︿︶)o 唉,思路很快就有了,代码写得丑,找错找了半天,最终在场外Submit的1A了。写题时候脑瘫,还搞了个KMP上去。。。其实长... 阅读全文