线段树
莫比乌斯灯泡
力争把题解写的好懂,错误之处请评论。
展开
-
codeforce_914D(GCD+线段树)
题意:给出一个数组,查询某一段的GCD是否猜测正确,假如这段最多有一个数不是所有数GCD的倍数,那么就算猜对了,否则就是猜错。 思路:用线段树维护每一段的GCD,单点更新不用说,那么在查询的时候,需要稍微做点手脚,向下查询的时候,如果说左子树的GCD不能整除x,就说明至少在左子树这个区间有一个数不是x的倍数,这些数可能在要找的区间[a,b]里,也可能不在,而是在左子树-[a,b]的集合里,如果是原创 2018-01-21 20:54:02 · 791 阅读 · 0 评论 -
http://codeforces.com/contest/915/problem/C
传送门 题意:给出两个数a,b将a的每一位打乱重组成一个比b小最大的数。 思路:从小到大对a排序,选取这样的数的每一位,设置一个中间字符串t,把当前位和后面更大的位交换,若交换后,任然满足条件,则让a也执行同样的交换,否则,a不执行任何操作。#include#include#includeusing namespace std;int main(){ long long原创 2018-01-16 14:08:16 · 229 阅读 · 0 评论 -
HDU3966(树链剖分+线段树区间更新,单点查询)
传送门题意:有n个节点,每两个节点有一条唯一路径,有两种操作 1:给l到r的节点+k或者-k 2:查询x节点的值思路:裸的树链剖分加一个线段树区间更新,网上有好多代码写得明显不对居然过了,这题数据太水了,还发表了博客,第一次写树链剖分,写下博客,当作笔记。#include#define lson l,m,rt#define rson m+1,r,rtusing names原创 2018-01-26 18:49:28 · 236 阅读 · 0 评论 -
Poj3468(线段树延迟更新)
传送门题意: 给出l,r,x,对l到r上的每个数都加上x; 给出l,r,对l到r求和 思路:线段树延迟更新#include#include#include#includeusing namespace std;#define maxn 2000005typedef long long ll;ll da[maxn*2+5],db[maxn*2+5];int n,q;v原创 2018-01-10 16:58:47 · 307 阅读 · 0 评论