摘要: 一道非常神奇的题目 var v:array[0..10010] of boolean; n,k,i,x,ans,s:longint; begin readln(n,k); fillchar(v,sizeof(v),false); ans:=1; for i:=1 to n do begin read 阅读全文
posted @ 2014-03-16 23:08 acphile 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 加深对最小费用最大流的理解题 题目求无向图来回和最短的路径,每条边只能走一次 不难想到,无向图中来回等于从源点出发走两条不同路径到汇点(区别于k短路,这里每条边只能走一次); 考虑到边的限制,不难想到,把限制变成容量 连超级源点到起点,容量为2,费用为0; 最小费用最大流即可 这里就不贴代码,以前用 阅读全文
posted @ 2014-03-16 23:07 acphile 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 这两题本质是一致的; 一般来说,对于最长(短)化最短(长)的问题我们一般都使用二分答案+判定是否可行 因为这样的问题,我们一旦知道答案,就能知道全局信息 拿poj2455举例,对于二分出的一个答案,我们将不符合的边全部去掉,在做一遍最大流判断是否成立即可 注意这道题有重边,所以用链式前向星比较好(T 阅读全文
posted @ 2014-03-16 22:51 acphile 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 树上背包? 问最少断掉多少条边可以形成节点数为k的块 设f[i,j]表示以节点i为根,形成一个节点数为k的块要断多少条边 则有:f[x,j]:=min(f[x,j],f[x,j-k]+f[y,k]-2) y是x的孩子 为什么要减2,现在装入以y为节点的子树,x和y之间的边,这条边自然不用断了,但在计 阅读全文
posted @ 2014-03-16 22:32 acphile 阅读(138) 评论(0) 推荐(0) 编辑