关闭

[树链剖分 可持久化线段树 垃圾数据结构题] Codechef JUNE17 #OAK Persistent oak

垃圾数据结构题大概就是维护树上的点离最大承重还差多少 然后断掉的就是到根路径上最早的小于0的地方 断掉后 到根路径还剩的承重都要加上掉下的重量 就是一颗线段树满足区间加 区间求min鄙视CC强行可持久化 硬上主席树标记永久化#include #include #include #include #define cl(x)...
阅读(129) 评论(0)

[链分治 重链剖分 FWT] BZOJ 4911 [Sdoi2017]切树游戏

我链分治是从immortalCO今年论文学来的 就是一个序列上能够维护的东西,把他搬到重链上,先处理好儿子重链的答案,然后把对这条重链上的影响累加在这条重链上然后就是套路 FWT一下就能加和乘了 注意0没有逆元复杂度O(mnlog2n)O(mn\log^2n) 实际上树链剖分是跑不满的 rank1 开心 O(∩_∩)O~~#include #include #...
阅读(430) 评论(0)

[长链剖分] BZOJ 1758 [Wc2010]重建计划

关于长链剖分 两个应用 O(n)O(n) 统计每个点子树中可合并的以深度为下标的信息 经过一些预处理,单次O(1)O(1)在线查询一个点的kk级祖先 这题二分答案后就是求长度在区间内的最长链 然后就记录下某个深度的最大dis 长链剖分加线段树 维护 O(nlog2n)O(n\log ^2n) 从轻儿子合并来的时候顺便更新答案竟然比点分慢#include #include<cst...
阅读(265) 评论(0)

[树链剖分] BZOJ 4811 [Ynoi2017]由乃的OJ

怎么这么眼熟 BZOJ 2908 又是nand? 复杂度?O(64∗nlog2n)O(64*n\log^2n) 吃不消吧 然后发现我写的是假题解 什么三十二颗线段树 明明可以压位在一起orz 维护上面说的这个东西并不需要64*2个bool变量,而是可以压到两个unsigned long long里,分别代表每一位输入为0和每一位输入为1。 将两个合并:若输入为0,经过左变量后某些bi...
阅读(225) 评论(0)

[点双连通分量 缩点 树链剖分] Codeforces 487E #278 (Div. 1) E. Tourists

点双连通分量的缩点技巧 来自:http://blog.csdn.net/a_crazy_czy/article/details/52244069 在这里我们使用这样一种方法:对于每一个点双连通分量,我们建一个新建点储存点双所有点的最小权值,然后该点向点双内所有不是深度最小的点连一条边,然后深度最小的点(大多情况为割点,当然树根不一定是割点)向这个新建点连边。  注意到这棵树一定是普通...
阅读(216) 评论(0)

[鬼畜 树链剖分 线段树] BZOJ 2814 tree

类似最大子段和去搞 可以把两头看成各有两个接口 然后随意维护十几个值搞搞搞 打了一中午 调了一晚上 发现看错题 改了改 调到睡觉 心累 #include #include #include #include using namespace std; typedef long long ll; inline char nc(){ static char buf[100000],*...
阅读(317) 评论(0)

[树链剖分 线段树] BZOJ 4127 Abs

每个点只可能从负到正一次 暴力开两棵线段树分别维护正负 均摊nlogn...
阅读(238) 评论(0)

[树链剖分 线段树 标记永久化] BZOJ 4515 [Sdoi2016]游戏

想到了维护 ax+b 但不知道怎么修改 然后就听说了标记永久化 对于两个直线方程 把决定范围小的下放到子树中 树链剖分两个log,标记一次最多下推log层 三个log复杂度好虚 #include #include #include #include using namespace std; inline char nc() { static char buf[100000],...
阅读(495) 评论(0)

[二分答案 树链剖分] BZOJ 4326 NOIP2015 运输计划

考虑二分 把所有超过mid的链取交集,然后取交集上最长的边权赋0,判断 #include #include #include #define V G[p].v using namespace std; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+frea...
阅读(354) 评论(0)

[树链剖分 线段树 堆] BZOJ 4538 [Hnoi2016]网络

裸的树链剖分 线段树里套个堆 最暴力的打法 还有一种做法是考虑二分答案,如果大于答案的边都经过询问点,则往小的二分否则往大的二分。这样我们只要维护路径的交集。用rmq求lca的话可以做到O(1)求出两条路径的交集。可以离散后用线段树维护二分结构,并在对应的节点上记录路径交集 O(logn)内回答询问了。...
阅读(258) 评论(0)

[树链剖分 线段树] BZOJ 2908 又是nand

树剖 然后开32棵线段树 记录1/0 从左/右 经过 变成的值 然后就是一些区间合并成一条有向路径 #include #include #include #define V G[p].v #define nand(x,y) (!((x)&(y))) #define digit(x,k) (((x)>>((k)-1))&1) using namespace std; typedef lo...
阅读(233) 评论(0)

[树链剖分 线段树] BZOJ 3531 [Sdoi2014]旅行

树链剖分 给每一个信仰开一棵线段树 然后就是动态开点的打码问题了 #include #include #include #include #define V G[p].v using namespace std; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fr...
阅读(162) 评论(0)

[扫描线 树链剖分 树状数组] BZOJ2758 [SCOI2012]Blinker的噩梦

扫描线  一般扫描线的做法就是想象一根线向某个方向扫过,进入的进入,出去的出去,用一个set维护序列或是结合线段树,当然最恶心的就是加上计算几何 但是落实到这题上就是各种鬼畜乱搞,只能膜大神 省选前做难题的结果是——到处翻题解,程序越改越像 “题意:平面上有n个多边形(凸包和圆)。任意两个多边形AB只有两种关系:(1)A包含B或者B包含A;(2)AB的公共面积为0。每个多边形有一个...
阅读(985) 评论(0)
    个人资料
    • 访问:261085次
    • 积分:11910
    • 等级:
    • 排名:第1320名
    • 原创:969篇
    • 转载:3篇
    • 译文:0篇
    • 评论:49条
    最新评论