POJ 1195 2维线段树(树套树实现) 树状数组
摘要:1: #include 2: #include 3: #include 4: #include 5: #include 6: using namespace std; 7: 8: #define LL(a) a>1; 32: sub_build(subl, mid, LL(subidx), idx); 33: ...
阅读全文
posted @
2014-05-16 17:20
O(1)的小乐
阅读(1069)
推荐(0)
HDU3887 DFS序+ 线段树
摘要:查询树上某个节点的子节点的标号小于其标号的数目. 一个trick是建立线段树之后,从标号小的向标号大的来做更新. 1: #include 2: #include 3: #include 4: #include 5: #include 6: #include 7: using namespace std; 8: #pragma comme...
阅读全文
posted @
2014-05-11 22:41
O(1)的小乐
阅读(358)
推荐(0)
POJ 3321 DFS序+线段树
摘要:单点修改树中某个节点,查询子树的性质.DFS序 子树序列一定在父节点的DFS序列之内,所以可以用线段树维护. 1: /* 2: DFS序 +线段树 3: */ 4: 5: #include 6: #include 7: #include 8: #include 9: #include 10: #include 11: ...
阅读全文
posted @
2014-05-11 20:53
O(1)的小乐
阅读(380)
推荐(0)
ZOJ 3229 有上下界最大流
摘要:1: /** 2: ZOJ 3229 有上下界的最大流 3: 两次求最大流的过程,非二分 4: 有源汇上下界的最大流问题, 首先连接 sink -> src, [0,INF]. 5: 根据net的正负,来建立 Supersrc 与 supersink 之间的边,做一次 maxflow. 6: 若所有的Supersrc ...
阅读全文
posted @
2014-05-08 17:55
O(1)的小乐
阅读(607)
推荐(0)
POJ 3801 有上下界最小流
摘要:1: /** 2: POJ 3801 有上下界的最小流 3: 4: 1、对supersrc到supersink 求一次最大流,记为f1。(在有源汇的情况下,先使整个网络趋向必须边尽量满足的情况) 5: 2、添加一条边sink -> src,流量上限为INF,这条边记为p。(构造无源汇网络) 6: 3、对supersrc到supersink再次求最大...
阅读全文
posted @
2014-05-08 17:54
O(1)的小乐
阅读(539)
推荐(0)
ZOJ 2314 带上下界的可行流
摘要:对于无源汇问题,方法有两种. 1 从边的角度来处理. 新建超级源汇, 对于每一条有下界的边,x->y, 建立有向边 超级源->y ,容量为x->y下界,建立有向边 x-> 超级汇,容量为x->y下界.建立有向边 x->y,容量为x->y的上界减下界. 2 从点的角度来处理. 新建超级源汇,对于每个点流进的下界和为 in, 流出此点的下界和为out.如果in > out. 建立有向边 超级源->i,...
阅读全文
posted @
2014-05-08 11:17
O(1)的小乐
阅读(693)
推荐(0)
POJ 2315 最小费用最大流
摘要:从1走到N然后从N走回来的最短路程是多少? 转换为费用流来建模. 1: /** 2: 因为e ==0 所以 pe[v] pe[v]^1 是两条相对应的边 3: E[pe[v]].c -= aug; E[pe[v]^1].c += aug; 4: 5: */ 6: #include 7: #include 8: #in...
阅读全文
posted @
2014-05-08 09:26
O(1)的小乐
阅读(281)
推荐(0)
POJ 2516 最小费用最大流
摘要:每一种货物都是独立的,分成k次最小费用最大流即可! 1: /** 2: 因为e ==0 所以 pe[v] pe[v]^1 是两条相对应的边 3: E[pe[v]].c -= aug; E[pe[v]^1].c += aug; 4: 5: */ 6: #include 7: #include 8: #include ...
阅读全文
posted @
2014-05-07 15:32
O(1)的小乐
阅读(210)
推荐(0)