
区间维护算法
文章平均质量分 90
AndrewMe8211
no more threads
展开
-
【莫队】luogu P3901 数列找不同
题面分析首先膜拜莫大队长本题是莫队的入门题,数据真心良心用莫队直接过用线段树的大佬无视本蒟蒻code#include<bits/stdc++.h>using namespace std;#define loop(i,start,end) for(int i=start;i<=end;i++)#define anti_loop(i,start,end)原创 2019-02-07 13:47:06 · 211 阅读 · 0 评论 -
luogu P1972 [SDOI2009] HH的项链【莫队——奇偶优化详解】
题面分析莫队,往死里卡常,开O2加奇偶性优化可卡过我才不会告诉你我这道题提交了37次呢code// luogu-judger-enable-o2#include<bits/stdc++.h>using namespace std;#define loop(i,start,end) for(register int i=start;i&原创 2019-02-07 22:54:35 · 2683 阅读 · 6 评论 -
luogu P4231 三步必杀
分析一开始想到差分+线段树,好像数据有太大,拿不满分于是看到了题解里某各路大佬都讲一个高端名词曰:二阶差分何为二阶差分?就是对差分数组进行差分乍一眼看去好像没用,但是手推一下会发现牛逼的地方(图小,大佬轻喷)我们发现,原数组要加上一个等差数列,而一阶差分只需区间均加,而二阶差分更恐怖,只需要修改4个数。。。从图中不难推得:设l,r,s,e如题意,且方差为d设l,r,s,e如题意...原创 2019-02-12 21:13:32 · 246 阅读 · 0 评论 -
luogu P2709 小B的询问
analysis莫队,绝对是裸的莫队维护出c数组即可要注意的是,在添加项的时候那个insert函数和delet函数的写法,这两个函数根据题意不同而不同code// luogu-judger-enable-o2//表示这份代码不开o2好像过不了#include<bits/stdc++.h>using namespace std;#define loop(i,start...原创 2019-04-06 10:58:06 · 105 阅读 · 0 评论 -
luogu P2146 [NOI2015]软件包管理器
analysis手推一下数据可以得到:如果对于依赖关系(a,b),我们将b连向a(将边反向),这样的话,安装软件包就意味着查询从这个点到根节点这条路径上已安装的软件包的个数然后将其全部赋值1,卸载软件包就意味着查询以这个点为根节点的子树内已安装的个数然后将其清零树链剖分是没错了,但同时要对线段树的操作进行改进,即将区间全部赋值1和全部赋值0而不是累加注意不要把线段树打残了,否则调试半天c...原创 2019-04-26 09:16:23 · 167 阅读 · 1 评论 -
luogu P3950 部落冲突
analysis分析可知,用树剖关键在于将边权转化为点权我们可以将边权向下压,压到两边的点中深度较大的的那个点,然后通过求路径上的点权值和是否为0来判断是否可通过(注意要权值和要减去LCA的权值,因为路径并不会经过LCA和它上面那个点之间的连边)真的真的不要把线段树和树剖打爆了啊啊啊啊啊啊啊啊啊code#include<bits/stdc++.h>using names...原创 2019-04-26 16:08:17 · 140 阅读 · 0 评论 -
luogu P2574 XOR的艺术 P3870 [TJOI2009]开关
analysis首先不难看出来这是一道线段树的题,然后由于这道题要维护的操作和一般的线段树不同,所以考虑修改pushdown函数和lazy标记考虑修改函数,若将区间中每个数取反,那么其中的1的个数=区间元素个数-原区间1的个数。此时容易想到让lazy标记代表此区间被XOR情况,1代表被XOR,0代表没有被XOR由于A^ 1 ^1=A,一段区间如果被XOR两次,就相当于没有被XOR,即la...原创 2019-05-03 10:20:04 · 240 阅读 · 0 评论