08 2013 档案

摘要:http://acm.sgu.ru/problem.php?contest=0&problem=286先找欧拉回路,再做二分匹配,输出匹配有一道题和这个很像:HDU 3551 Hard Problem(带花树匹配)但是这道题用带花树内存开不下匹配的数组。。。 1 /** 2 *先找欧拉回路,再做二分匹配,输出匹配 3 *场上想的是用带花树做,因为之前做过一道类似的题:HDU 3551 Hard Problem 4 *设边e(u,v),则将(u,e) (v,e') (e,e')连起来 5 *注意u有deg[u]-D[u]-1个顶点,v同样,e,e'表示将边e拆成e 阅读全文
posted @ 2013-08-29 22:13 xysmlx 阅读(293) 评论(0) 推荐(0) 编辑
摘要:http://acm.sgu.ru/problem.php?contest=0&problem=242网络流+打印路径原点和人建立权为1的边,人和学校建立权为1的边,学校和汇点建权为2的边最大流是2*k则yes,否则no顺便附上修改自他人的带各种优化的Dinic模板~ 1 /** 2 *网络流+打印路径 3 *原点和人建立权为1的边,学校和汇点建权为2的边 4 *最大流是2*k则yes,否则no 5 * 6 *@Author: xysmlx xiaohai 7 */ 8 //#pragma comment(linker, "/STACK:102400000,102400000 阅读全文
posted @ 2013-08-28 22:42 xysmlx 阅读(301) 评论(0) 推荐(0) 编辑
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3551终于把带花树专题刷完了题意:给定一个无向图,问能否删除一些边使得所有顶点的读数为给定的度数方法:这道题看网上有用网络流解的,这里用带花树做匹配来解。先预处理所有的顶点的度数deg,然后与给定的度数D比较。设边e(u,v),则将(u,e) (v,e') (e,e')连起来,注意u有deg[u]-D[u]-1个顶点,v同样,e,e'表示将边e拆成e和e'两个顶点,然后用带花树算法做匹配,如果有完美匹配则输出YES,否则输出NO。(想一下,如果有完美匹配就表明这些多余的边能够直 阅读全文
posted @ 2013-08-23 23:47 xysmlx 阅读(802) 评论(0) 推荐(0) 编辑
摘要:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3726将同在L范围内的棋子建立边,然后做一般图的最大匹配(带花树算法),如果是完美匹配则输出YES;否则输出NO。如果有完美匹配的话,顺着匹配拿掉棋子即可使后手赢。 1 //#pragma comment(linker, "/STACK:102400000,102400000") 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 1 阅读全文
posted @ 2013-08-21 18:16 xysmlx 阅读(368) 评论(0) 推荐(0) 编辑
摘要:http://acm.timus.ru/problem.aspx?space=1&num=1099贴板题,找一般图的最大匹配数,并输出最大匹配 1 //#pragma comment(linker, "/STACK:102400000,102400000") 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #incl 阅读全文
posted @ 2013-08-21 13:56 xysmlx 阅读(336) 评论(0) 推荐(0) 编辑
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4687题意:找到所有的最大匹配,然后输出不在任何最大匹配中的边的序号解法:贴板题,一般图的最大匹配,带花树算法,然后求暴力枚举去掉一条边的最大匹配数与原最大匹配数比较赛后才知道带花树算法直接用的标程的带花树算法的模板。。。 1 /** 2 *版题。。。之前不知道这个算法。。。 3 *一般图的最大匹配:带花树算法 4 *暴力枚举去掉一条边的最大匹配数与原最大匹配数比较 5 * 6 *@Author: xiaohai 7 */ 8 //#pragma comment(linker, "/STACK... 阅读全文
posted @ 2013-08-21 13:18 xysmlx 阅读(323) 评论(0) 推荐(0) 编辑
摘要:题目1001 Arc of Dream (HDU 4686)http://acm.hdu.edu.cn/showproblem.php?pid=4686队友推的矩阵快速幂,不知道HDU是用%I64d,在%lld被WA了几次。。。cin, cout会T。。。矩阵:[sum, aibi, ai, bi, 1] 5*5的注意特判n=0时输出0 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 typedef long long ll; 9 cons... 阅读全文
posted @ 2013-08-21 13:06 xysmlx 阅读(279) 评论(0) 推荐(0) 编辑
摘要:各种帮助网站CTEX在线文档http://www.ctex.org/OnlineDocuments代码框架 1 \documentclass[a4paper,12pt]{article} 2 \usepackage[top=2.54cm, bottom=2.54cm, left=3.18cm, ri... 阅读全文
posted @ 2013-08-19 22:44 xysmlx 阅读(1169) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3177先找双连通分量缩点,然后找桥重新构图成树,然后找树的叶子节点答案是:(树的叶子节点+1)/2顺便附上双连通分量的模板 1 //#pragma comment(linker, "/STACK:102400000,102400000") 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #inc 阅读全文
posted @ 2013-08-17 19:50 xysmlx 阅读(204) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1904方法同HDU 4685 2013多校8 1010,只是那道题需要自己找匹配,这道题已经给定了匹配了。根据初始给定的匹配直接找强连通分量,在同一强连通分量的人可以配对。这题试了一下std::ios_base::sync_with_stdio(false);,加了这句cin比scanf竟然还快。。。。。。 1 //#pragma comment(linker, "/STACK:102400000,102400000") 2 #include 3 #include 4 #include 5 #include 6 #inc 阅读全文
posted @ 2013-08-17 17:59 xysmlx 阅读(184) 评论(0) 推荐(0) 编辑
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4685先找最大匹配数ret然后把将n这一边的大于n的m-ret与m这一边的n+m-ret边连起来,将n这一边的n+m-ret与m这一边的大于m的n-ret连起来,做最大匹配,得到一个匹配然后根据这个匹配找强连通分量,属于同一强连通分量的priceness和price可以任意配同一强连通分量的所有priceness可以给同一强连通分量的price。用hopcroft-karp算法890ms,用匈牙利算法2656ms。。。顺便在代码中附上hopcroft-karp算法和找强连通分量的模板~ 1 /** 2 *.. 阅读全文
posted @ 2013-08-17 14:31 xysmlx 阅读(350) 评论(0) 推荐(0) 编辑
摘要:1 /** 2 *2-SAT模板,Modified Edition of LRJ 3 *输入:按照法则添加边(参数为2*i或者2*i+1) 4 *运行:先init(n),再add(),再solve() 5 *输出:mark[](1表示选中),solve()(是否有解) 6 */ 7 const int maxn = 0; 8 struct TwoSAT 9 { 10 int n; 11 vector G[maxn*2]; 12 bool mark[maxn*2]; 13 int S[maxn*2], c; 14 15 bool df... 阅读全文
posted @ 2013-08-14 16:55 xysmlx 阅读(208) 评论(0) 推荐(0) 编辑
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3622对半径进行二分,如果冲突则加入边(按照X AND Y == 0的法则插入边),再2-SAT即可。 1 //#pragma comment(linker, "/STACK:102400000,102400000") 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 1 阅读全文
posted @ 2013-08-14 16:31 xysmlx 阅读(220) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示