图
BEconfidence
坚持才是胜利之道
展开
-
[超源点:还是最短路的变形]hdu2066
这个答案中队列用的for循环的形式还是挺好玩的#includeusing namespace std;const int INF = 0x7fffffff;int T,S,D,L;const int MAXN = 1005;int graph[MAXN][MAXN];int s[MAXN];int d[MAXN];int Dijkstra(int beg,int end){原创 2015-09-15 21:27:34 · 435 阅读 · 0 评论 -
[最大流法二分匹配]uva753
很巧妙的用数组存储c和f方便#includeusing namespace std;const int MAXN = 310;const int INF = 0x3c3c3c3c;string str;map rs,dv;int mr[MAXN];//从源点到i的最小残量int p[MAXN];//更新时i的上流节点int c[MAXN][MAXN],f[MAXN][MAXN]原创 2015-09-15 23:55:20 · 434 阅读 · 0 评论 -
[二分网络流]uva12264
思路:把每个点拆成两个点,一个入度,一个出度,入度向自己的和每个相邻的点的出度连一条边,容量是ai,每个点出度连一条边到汇点,容量为1,那些与敌人相邻的点再多连一条边到汇点,容量是二分的值,我们只需要二分这个值,跑一下网络流,如果满流,表示可以,否则不行。#includeusing namespace std;const int inf = 0x7f7f7f7f;const int ma原创 2015-09-22 14:59:48 · 706 阅读 · 0 评论 -
[二分图最大匹配=最小覆盖点]uva12549 Sentry Robots
#includeusing namespace std;const int maxn = 2500 + 10;const int N=100 +10;int X,Y;int g[maxn][maxn], linker[maxn];bool vis[maxn];int mapp[N][N],n,m;pair Map[N][N];bool dfs(int u){ for(in原创 2015-09-21 22:03:39 · 631 阅读 · 0 评论 -
[枚举最小瓶颈生成树]UVa-1395 - Slim Span(kruskal)
就是紫书的思路,像暴力#includeusing namespace std;const int MAXN = 105;const int INF = 0x3f3f3f3f;struct Edge{ int u,v,cost; bool operator < (const Edge& a)const { return cost > a.cost;原创 2015-09-23 22:55:41 · 402 阅读 · 0 评论 -
[最小生成树+二进制枚举]UVa1151 - Buy or Build
二进制枚举子集不太懂用的还是例题的思路#includeusing namespace std;const int maxn = 1005;struct point { int x,y;}pp[maxn];struct edge{ int s,e,dist;}l[maxn*maxn];int q,n,m;int p[maxn];vector g[10];i原创 2015-09-23 23:04:13 · 796 阅读 · 0 评论 -
[二进制位运算状态 隐式图搜索]UVa658 - It's not a Bug, it's a Feature!
用二进制表示状态运算起来更快一些,这样一行就可以用一个数字去表示其状态了。按这个思路继续想下去就是如何建图了,其实无论邻接表还是邻接矩阵貌似建完整图的时间复杂度都比较大,而且好多状态未必用的到,因而不如干脆不建完整图,每次都扫描一遍转换规则,如果可以生成另一个状态就将另一个状态直接入队即可。①判定某些位置是否为1,如判定2、4位置为1,则转化为判断x|0101是否等于x。原创 2015-09-23 23:22:39 · 540 阅读 · 0 评论 -
[hash 表达式树]UVa12219 - Common Subexpression Elimination
将每一个结点用一个三元组来表示,然后映射到map中以去重 。 其中三元组中有一个string , 我们可以用hash来处理这个string 。因为string最大长度为4, 所以我们可以这样处理 : int hash = 0; hash = hash * 27 + s[i] - ‘0‘ + 1; 将hash每次乘以27 是因为字符串只有小写字母,这样做可以完美的去重 ,保原创 2015-09-23 23:43:26 · 656 阅读 · 0 评论 -
[最小割最大流]UVa1515 - Pool construction
建图:1、设定源点S,和汇点T. 2、把周围的洞全部变为草,然后对于周围的每个草建立S到t容量为无穷大的边 3、对于其他的草,建立S到该点容量为d的边,对于洞建立该点到汇点容量为f的边 4、对于图中的每个点与它周围建立容量为b的双向边。#includeusing namespace std;const int INF原创 2015-09-24 00:11:03 · 383 阅读 · 0 评论