
树分治
文章平均质量分 82
Miao_zc
膜Hz
展开
-
bzoj4568: [Scoi2016]幸运数字
一句话题意:树上两点间路径子集最大异或和。 看了一下线性基发现好强,但我也不太会,先贴代码吧。。 #include #include #include #define N 20005 #define M 200005 #define Mlg 6000005 #define ll long long using namespace std; bool ok[N<<1]; int n,m,x,y,原创 2016-05-24 15:09:43 · 1198 阅读 · 0 评论 -
bzoj3672: [Noi2014]购票
为什么我这么慢!!! 这道题大概有两种思路,树分治和线段树。 树分治:使用类似cdq的方式,1:找重心,分裂,2:work(根所在的树)3:用重心到根的点的答案更新重心的子树,4:work(重心的子树)。更新的时候维护一个下凸壳,在下凸壳上二分即可。(我写了这个) 线段树:同样需要维护下凸壳,考虑在dfs时动态维护当前节点到根路径上的区间下凸壳,这个用线段树在每个节前维护一个支持回撤的单调栈原创 2016-12-12 15:15:26 · 685 阅读 · 1 评论 -
cf757G. Can Bash Save the Day?
简述题意:给一棵n个节点的数和一个n的数组(n的排列),支持两个操作:1 询问a[l]~a[r]的所有点到某个点的距离,2 交换a[x]与a[x+1]。 一开始想到了这道题bzoj4012: [HNOI2015]开店,大概看了之后发现是开店的加强版。我想到像开店一样使用主席树处理,显然操作2很容易。然而 他的时间是一个log。大概看了题解,感觉套路~ 毕竟开店的题解大多是log^2。。原创 2017-03-02 16:11:23 · 987 阅读 · 0 评论