上一页 1 ··· 19 20 21 22 23
摘要: 题目问的是从1到n再回到1边不重复走的最短路,本质是找1到n的两条路径不重复的尽量短的路。 1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<algorithm> 5 using namespace std; 6 阅读全文
posted @ 2015-10-03 11:58 WABoss 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 比较形象的是地图每个点都拆成三个点,这三个点限制流量为0或1,于是再一分为二,这样每个点都被拆成6个点。。。 其实拆两个点,连容量为柱子高的边,这样就行了。。 这题我掉坑了,“1 lizard was left behind.”。。虽然样例都把一切都说了。。要注意细节。。 1 #include<cs 阅读全文
posted @ 2015-10-03 11:17 WABoss 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 把入侵者看作边,每一行每一列都是点,选取某一行某一列都有费用,这样问题就是选总权最小的点集覆盖所有边,就是最小点权覆盖。 此外,题目的总花费是所有费用的乘积,这时有个技巧,就是取对数,把乘法变为加法运算,最后再还原。 另外还可以从最小割的思路去这么理解: 每一行与源点相连,容量为该行的花费;每一列与 阅读全文
posted @ 2015-10-03 10:07 WABoss 阅读(582) 评论(0) 推荐(0) 编辑
摘要: 把某点与某几点分开的最小花费,当然想到最小割。具体怎么建图,可以画个简单的情况,然后就清楚了: 0到1不受控制,建立0->1容量为INF的边; 1到0受在0一边的一个控制面板的控制,建立1->0容量为1的边。 1 #include<cstdio> 2 #include<cstring> 3 #inc 阅读全文
posted @ 2015-10-02 17:21 WABoss 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 形象生动的最小割。。 1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<algorithm> 5 using namespace std; 6 #define INF (1<<30) 7 #define MAXN 阅读全文
posted @ 2015-10-02 16:34 WABoss 阅读(498) 评论(0) 推荐(0) 编辑
摘要: 看了题解。当时也觉得用邻接矩阵挺好写的,直接memset;然而邻接矩阵不懂得改,于是就放开那个模板,写了Dinic。。 方法是,按字典序枚举每一条满流的边,然后令其容量减1,如果最大流改变了,这条边就是属于某个最小割;接下来一直重复下去,直到得到一个割边集,而它自然是字典序最小的。 我在每次某条边容 阅读全文
posted @ 2015-10-02 16:24 WABoss 阅读(675) 评论(0) 推荐(0) 编辑
摘要: 题目要的并不是最大匹配下得到的最大的结果。 网上流行的做法是加边。其实,在连续增广的时候求得一个可行流的总费用为负就停止这样就行了。 1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<algorithm> 5 us 阅读全文
posted @ 2015-10-02 11:22 WABoss 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 这题第一眼就想到暴力。。 枚举每一个ti,就能确定tj,tj一定是剩下数最大或最小的。为了求tj就要求出数列最大最小次大次小。时间复杂度O(n)。 感觉暴力挺有趣的。 1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 阅读全文
posted @ 2015-10-02 10:53 WABoss 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 求一次最大流后,分别对所有满流的边的容量+1,然后看是否存在增广路。 1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<algorithm> 5 using namespace std; 6 #define INF 阅读全文
posted @ 2015-10-02 10:04 WABoss 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 有向连通图存在欧拉回路的充要条件是所有点入度=出度。 首先随便给定所有无向边一个方向(不妨直接是u->v方向),记录所有点的度(记:度=入度-出度)。 这时如果有点的度不等于0,那么就不存在欧拉回路,就需要改变那些无向边的方向。 而改变一个无向边的方向,相当于边上两个端点的入度和出度都变化了1,它们 阅读全文
posted @ 2015-10-02 09:22 WABoss 阅读(375) 评论(0) 推荐(0) 编辑
摘要: 一开始跟着数据结构的书自己写了指针版本的,感觉写得太长太不优雅,后来想学别人用数组模拟指针的那种写法。。不过用不来,所以还是用自己写的吧,至少习惯,也没BUG吧。。LCT那边另外了,写不来,只能抄别人模板。。 1 #include<cstdio> 2 #include<algorithm> 3 us 阅读全文
posted @ 2015-10-01 11:24 WABoss 阅读(323) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/shahdza/article/details/6317011 inline void in(int &ret){ char c; ret=0; while(c=getchar(),c<'0'||c>'9'); while(c>='0'&&c<='9') r 阅读全文
posted @ 2015-10-01 10:48 WABoss 阅读(395) 评论(1) 推荐(0) 编辑
摘要: 最大流,ISAP 抄的(http://www.cnblogs.com/wally/p/3274438.html)改了下。。 最小费用最大流 阅读全文
posted @ 2015-10-01 10:32 WABoss 阅读(463) 评论(0) 推荐(1) 编辑
上一页 1 ··· 19 20 21 22 23