树分治
pbihao
这个作者很懒,什么都没留下…
展开
-
【BZOJ 1176】 [Balkan2007]Mokia cdq分治
Description 维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M Input 第一行两个整数,S,W;其中S为矩阵初始值;W为矩阵大小 接下来每行为一下三种输入之一(不包含引号): "1 x y a" "2 x1 y1 x2 y2" "3" 输入1:你需要把(x,y)(第x行第y列)的格子原创 2016-12-12 16:14:55 · 222 阅读 · 0 评论 -
【hdu 4918】Query on the subtree 动态树分治
先填上,以后来说#include #include #include #include #define maxm 4000021 #define maxn 100021 using namespace std; int n,m,head[maxn],tot=1,cnt,val[maxn],dep[maxn],dfn[maxn]; int f[maxn],s[maxn],size,rt,vis[ma原创 2017-02-20 16:51:50 · 328 阅读 · 0 评论 -
【BZOJ 3672】[Noi2014]购票 树分治+斜率优化
好了,回来填这个坑,闲来无事就尽力说清楚一些吧,code较难的部分我加了注释。 首先让我们考虑如果题目要求的不是一个树形结构,而是线性的我们怎么来处理。(其实就变成了一道水水的斜率优化dp),至少这个方程还是很好化简的,假设kp[i]的斜率方程式,但是我们会吃惊的发现,不等式左边x是单调的,但是不等式的右边斜率并不单调(p值给定,p[k]可以比p[j]大,也可以小),也就是说,在维护单调队列的时原创 2017-01-06 21:01:01 · 208 阅读 · 0 评论 -
【BZOJ 1492】[NOI2007]货币兑换Cash cdq分治+斜率dp
每一天的-a[i]/b[i]作为绿色的斜率k值,等价于求最右上的那条绿线与红线交点。维护一个凸包,将绿线一开始以k大小排序,这样一来就都具有单调性了,就可以使用斜率优化dp了 #include #include #include #include #define maxn 100020 #define eps 1e-9 #define LL long long #include using n原创 2016-12-12 16:24:20 · 311 阅读 · 0 评论 -
【BZOJ 2152】聪聪可可 点分治
直接分治,然后dis对3取模,有且只有取模后为(1,2)或者(0,0)对答案有贡献加起来就好了 #include #include #include #define maxn 20020 using namespace std; int s[maxn],rt,size,f[maxn],n,m,dis[maxn],head[maxn],tot=1,vis[maxn],ans; int t[3];原创 2016-12-27 15:43:37 · 252 阅读 · 0 评论 -
【poj 1741】tree 树的点分治
【poj 1741】tree 树的点分治原创 2016-09-20 17:03:08 · 254 阅读 · 0 评论 -
【bzoj 4016】[FJOI2014]最短路径树问题 树分治+树形dp
【bzoj 4016】[FJOI2014]最短路径树问题原创 2016-09-26 14:38:57 · 428 阅读 · 0 评论 -
【BZOJ 2599】 [IOI2011]Race 树的点分治
还是比较简单的树分治了吧(居然是ioi的题目,好开森qwq)。 众所周知,在树分治的过程中是会有重复计算的,因此我们每一次处理当前子树的时候都会减去子树的影响,所以定义ans[i]数组表示经过i条边,距离长度为k的点对数,这样就可以++或者--来维护这个ans数组了,然后就没什么了 吐槽:难道同一个点到一个点再走回来是合法吗?为毛要while(l #include #include #inc原创 2016-12-27 11:52:47 · 233 阅读 · 0 评论 -
【BZOJ 1316】 树上的询问 树分治
按理来说是一个非常简单的树分治,我只是为了将专题的时候作为一道引入题目的,不过,我擦set和map的常数差别有那么大吗,map居然比set慢了10倍,然后就一直T啊一直T最后看他们都用的set改过来就A了,我也是郁闷。 方法很简单,用set记录一个长度有没有出现过,然后每次树分治统计 #include #include #include #inclu原创 2017-01-03 10:20:29 · 249 阅读 · 0 评论 -
【BZOJ 3697】采药人的路径 树上点分治
自从gay豪讲了后缀自动机以后就不知道在干什么了,今天闲下来搞搞自己的专题,至于动态点分治什么的真的是坑啊。 好了,回到这道题,同样是处理路径问题,想到树分治。首先考虑没有休息站的方法,这里我想到有两种,一种就是dfs是处理出dis数组,排序后用数学神马的随便搞搞,还有一种就是基于dp思想的,定义数组f[i],g[i]分别表示当前子树中路径长度为i的节点数和之前子树中路径为i的节点数,这样就可以原创 2017-01-03 10:17:16 · 264 阅读 · 0 评论 -
【BZOJ 1095】[ZJOI2007]Hide 捉迷藏 动态树分治
一个很烦但是比较容易懂的算法。 先考虑如果我们允许Q*nlogn的复杂度的话怎么写(即每一次的操作都是nlogn的)。 考虑树分治,每一次先找到一个重心然后dfs每一个子树找到每一个子树最深的关灯,然后找到经过这个重心的最远两个点。最后开一个全局变量ans不断地更新ans就好了。 但是显然不能直接这样做,不过幸运的是,我们发现每一次分治的时候其实我们找的重心都是不变的,而从每一个重心dfs下原创 2017-02-21 18:50:20 · 250 阅读 · 0 评论