分治
文章平均质量分 84
BraketBN
这个作者很懒,什么都没留下…
展开
-
【BZOJ3697】采药人的路径【点分治】
点分治咯。参考的hzwer博客...http://hzwer.com/4526.html#include #include using namespace std;typedef long long LL;const int maxn = 200005;int n, head[maxn], cnt;int dis[maxn], depth[maxn],原创 2016-02-29 20:18:19 · 511 阅读 · 0 评论 -
【POJ1741】Tree【点分治】
题意:n个点的树,求距离不大于k的点对个数。点分治模板题。#include #include #include using namespace std;const int maxn = 10005, inf = 0x3f3f3f3f;int n, k, head[maxn], cnt, dis[maxn], root, ans, tot, size[ma原创 2016-02-29 20:11:24 · 310 阅读 · 0 评论 -
【BZOJ2772】policija【BCC】【割顶】【离线】【分治】【并查集】
【题目链接】先跑出dfs树。对于两个操作,先把不连通的情况用并查集搞掉。另外对于操作1,如果G1-G2是非树边,那么形成了环,这种情况肯定是yes。然后跑Tarjan,对每个操作形成的子树讨论一下就完了。#include /* Pigonometry */#include #include #include using namespace std;const原创 2016-04-28 15:33:20 · 566 阅读 · 0 评论 -
【BZOJ1095】[ZJOI2007]Hide 捉迷藏【动态树分治】
【题目链接】学习了一发可删堆。找重心那里忘了写!del[g[i].v],RE无数发。/* Pigonometry */#include #include #include #include using namespace std;const int maxn = 100005, maxm = maxn << 1, maxk = 21, inf = 0x3f3原创 2016-04-20 23:07:15 · 754 阅读 · 0 评论 -
【BZOJ2152】聪聪可可【点分治】
【题目链接】十年OI一场空,APIO见祖宗。点分治没有什么特殊的地方。在计数的时候,将边权模3,统计在模3意义下的深度,设tim[x]表示深度为x的点的个数,那么答案为tim[1] * tim[2] * 2 + tim[0] * tim[0]。/* Telekinetic Forest Guard */#include #include #include using原创 2016-05-07 18:18:11 · 400 阅读 · 0 评论 -
【BZOJ2599】[IOI2011]Race【点分治】
【题目链接】点分治。考虑经过点x的路径,对于x,用类似TreeDP的方法,记录no[d],表示路径长度为d时经过边最少的点的编号。对于已经走过的子树,更新no。对于当前子树,遍历到一个点v,用depth[no[k - dis[v]]] + depth[v]更新答案。注意给no清零时,用dfs姿势清零,这样做是O(n)的。如果直接用for或者memset,这样做是O(k)的,原创 2016-05-09 16:30:49 · 937 阅读 · 0 评论