
线段树
文章平均质量分 80
大蒟蒻syk
这个作者很懒,什么都没留下…
展开
-
[BZOJ3932] [CQOI2015]任务查询系统 && 可持久化线段树
搞不来莫比乌斯反演的我只好搞这个了 结果把自己整的要死 Orz首先把优先级离散化 然后开可持久化线段树 区间为优先级的区间把每个任务做成两个 类似于维护差分数组的感觉 然后一个一个插入到可持久化线段树里面去 注意对任务总数的增加 及 减少注意任务有重复 所以如果区间长度为1时 返回的是 和/数量*k一晚上就搞这个了Orz果然像我这样的人最好早点滚粗 #incl原创 2015-04-07 00:48:53 · 2400 阅读 · 0 评论 -
[POJ1117] Picture && 线段树+扫描线
把边排序 从左往右进行扫描计算周长 注意排序时左边的边要排在右边的边的前面#include#include#include#include#define SF scanf#define PF printf#define ls (i*2)#define rs (i*2+1)using namespace std;const int MAXN = 5000;struct Lin原创 2015-02-07 15:32:13 · 528 阅读 · 0 评论 -
[CF538F]A Heap of Heaps && 持久化线段树
直接枚举k 每个有儿子的节点和他的儿子区间的起点 容易发现这样枚举是调和级数 然后需要一个东西查询某段区间比x小的数 上主席树即可#include#include#include#include#include#define SF scanf#define PF printfusing namespace std;typedef long long LL;const in原创 2015-04-27 22:18:33 · 687 阅读 · 0 评论 -
[BZOJ2877][Noi2012]魔幻棋盘 && 二维线段树+差分
二维线段树原来就是线段树的节点上加个线段树- - 差分以(x, y)为中心向四周进行差分 这样就不用分别维护一阶差分和二阶差分什么的(如果以(1, 1) 为中心进行差分还要分开维护 而且涉及区间修改根本无法实现嘛)还有hlq神犇提出了8二维树状数组的方法(太可怕了) 膜膜膜这代码就6K啦? 有点不敢相信#include#include#include#include#inc原创 2015-06-03 19:54:57 · 1620 阅读 · 0 评论 -
[BZOJ3242][Noi2013]快餐店 && 环套树+线段树
如果给的是一棵树那么答案显然是直径/2但是现在给的是一个环套树 那你就枚举一下环上的每条边把它删掉再求直径就好辣(显然你不会走环上的某一条边 这很显然吧- - )然后你就要求剩下来的这棵树的直径 然后n^2会爆炸 怎么办捏我们维护以环上节点为根的树的最长链s环上两点距离可以用前缀和处理(先假设枚举的第一条边是环上第一个点和最后一个点的边 这样就可以用前缀和表示了)则直径为max原创 2015-06-05 10:52:07 · 1864 阅读 · 0 评论 -
[BZOJ4085][Sdoi2015]quality && 线段树 (TLE)
线段树维护F[ai-1], F[ai-1 + 1], F[ai-1 - 1], F[ai+1], F[ai+1 + 1], F[ai+1 - 1]以及两两乘积和加一的时候可以直接用递推式用保存的F值求出新的值减一的时候也可以解方程求值然后 写码农题然而此题常数太卡 在jzoj上都600ms了 BZ上还是过不去 弃疗了#include#include#include#i原创 2015-06-11 20:08:51 · 987 阅读 · 0 评论 -
[codeforces534E]Listening to Music && 可持久化线段树
每个线段树节点需要保存四个值,ls,rs,min,tag由于空间不够 所以把他们压缩成一个unsinged long longt[x] = (ls * N + rs) * T + val + tagt[x] % T 即可得到val + tag, ls = t[x] / T / N, rs = t[x] / T % N进行标记永久化过后可以用左右儿子的值解出自己的val,再解出tag原创 2015-05-25 19:28:27 · 735 阅读 · 0 评论