https://www.luogu.com.cn/problem/P3372 题目描述 如题,已知一个数列,你需要进行下面两种操作: 将某区间每一个数加上 kk。 求出某区间每一个数的和。 输入格式 第一行包含两个整数 n, mn,m,分别表示该数列数字的个数和操作的总个数。 第二行包含 nn 个用 ...
分类:
其他好文 时间:
2020-07-11 19:19:17
阅读次数:
92
树状数组能做的线段树都可以,但是有的时候为了代码简单,能写树状数组就不写线段树。 树状数组是一种类似线段树的数据结构,只不过树状数组上的操作比较简单,最简单的就是单点修改和区间查询 树状数组是按照数的二进制形式进行存储数据,s[1]存储的是a[1] ,s[2]存储的是a[1]+a[2] ,s[3]存 ...
分类:
编程语言 时间:
2020-07-11 11:14:57
阅读次数:
81
刚开始想出了一个分治做法,但是比较麻烦,需要分 4 中情况讨论. 后来偷看了一眼标签发现是线段树,然后就想出了这个线段树做法. 考虑序列以 $r$ 为右端点的答案,有 $\sum_{l=1}^{i} max(l,i)-min(l,i)=i-l$. 其中这个条件可以写成 $max(l,i)-min(l ...
分类:
其他好文 时间:
2020-07-11 09:21:57
阅读次数:
70
F. Raging Thunder 先感叹一句,这个题目真变态,我写了五六个小时。。。。。而且还是在知道怎么写的情况下。。。 题目大意: 给你一个字符串,这个字符串只包含 \(>\) 和 \(<\) ,其中 \(>\) 表示该位置的球会向右滚一格, \(<\) 表示该位置的球会向左滚一格,如果最左边 ...
分类:
其他好文 时间:
2020-07-10 20:46:11
阅读次数:
46
只需要用二进制来表示50个数,这样不会超过ll范围 之后按照dfs建树后建线段树维护 #include<iostream> #include<algorithm> #include<stack> #include<vector> #include<cstring> using namespace s ...
分类:
其他好文 时间:
2020-07-10 00:39:02
阅读次数:
94
题目链接:http://poj.org/problem?id=3321 题目大意:给定一棵树,某些节点上有苹果,多次询问各子树上的节点数,并且在询问的中途随时可能新增和删除苹果。 Sample Input 3 1 2 1 3 3 Q 1 C 2 Q 1 Sample Output 3 2 emmm, ...
分类:
移动开发 时间:
2020-07-09 19:37:43
阅读次数:
84
如果只有一次询问,可以分治,每次考虑跨过中点的情况。预处理左半边后缀or和,右半边前缀or和,然后用two pointers求。发现前、后缀or和只会变化O(log a)次。用线段树维护,记录每个区间的答案,以及前、后缀or和(这O(log a)个段)。push_up和查询时,还用two point... ...
分类:
其他好文 时间:
2020-07-08 23:21:12
阅读次数:
78
A. 售票系统 题目描述 输入格式 输出格式 样例 样例输入 4 6 4 1 4 2 1 3 2 2 4 3 1 2 3 样例输出 YES YES NO NO 分析 这道题就是一个线段树的区间修改和区间查询,但但但但是这道题n2可以过!!!!由于本人异常懒惰,就不写线段树的了,直接贴出暴力的代码,这 ...
分类:
其他好文 时间:
2020-07-08 20:16:54
阅读次数:
96
线段树分治。以时间轴建立线段树,每一个线段树节点,存放[L,R]时间内,有影响的操作1,建立可持久化trie树,trie树以商店位置为root,就可以支持商店的区间查询,然后将操作0,按照商店位置排序,进行线段树分治,每次到一个节点,先把操作0插入trie树,然后把所有当前时间内存的有影响的操作1全 ...
分类:
其他好文 时间:
2020-07-08 20:13:47
阅读次数:
59
(鸽 王 归 来) #算法简介 线段树合并可以将2个权值线段树合并为一个。 #实现 很简单,我们的操作如下: 2棵线段树都有的节点,把它们的值合并。 只有一颗线段树有节点,那么合并出来的线段树节点的值就是这个节点的值。 依次递归下去搞定一切。 一般来说,如果不需要用合并前的线段树信息,我们就可以卡一 ...
分类:
其他好文 时间:
2020-07-08 20:06:13
阅读次数:
47