ll p,a[MAXN],atag[MAXN],mtag[MAXN],ctag[MAXN],tree[MAXN]; void Pushup(int rt){tree[rt]=(tree[rt<<1]+tree[rt<<1|1])%p;} void Pushdown(int rt,int ln,int ...
分类:
其他好文 时间:
2020-05-17 16:08:05
阅读次数:
38
B: 部分和问题***(注意部分和 ! = 任意子区间求和不一样) 描述 给你N个数,问你能不能从其中取出一些,让它们的和为K. 输入 第一行包括两个数,N,K,分别代表数字个数,以及和为K. 接下来N行,每行一个数字. 输出 如果能选出一些数和为K, 输出YE5, 否则,输出N0 样例 输入: 4 ...
分类:
其他好文 时间:
2020-03-20 09:27:53
阅读次数:
97
【本文解决 区间修改/区间求和 的问题】 区间求和部分内容与上一篇内容相同,详见 "线段树点修改/区间求和" 已经知道了在O(logN)的复杂度内求N个连续数之和的做法 对于区间修改,最简单的办法就是进行多次点修改 但是多次点修改最后的时间复杂度为O(NlogN),还不及最普通的数组模拟O(n)效率 ...
分类:
其他好文 时间:
2020-03-19 19:00:09
阅读次数:
316
概述 这篇文章前半部分主要研究树状数组的 ,后半部分研究 。 前置知识 树状数组的基本知识以及单点更新区间求和,差分的思想。 区间更新,单点求和 分析 回顾一下最简单的树状数组的功能:快速求出一个数列中某个数的前缀和,以及修改一个位置上的数。 现在我们要利用这两个功能实现:快速求出某个数列中某个数的 ...
分类:
编程语言 时间:
2020-03-16 09:54:11
阅读次数:
59
SPOJ GSS4 (区间开根号 + 区间查询) (线段树) "传送门" 题目大意: 对于给定的$n$个数的序列,我们定义两个操作,分别是区间开根号以及区间求和。共有$m$次查询,其中$n,m\leq1e5,\sum_{i=1}^na_i\leq1e18$ 我们会发现一个神奇的事情(然而并不神奇), ...
分类:
其他好文 时间:
2020-03-03 20:38:17
阅读次数:
70
(一)线段树 1.E - Lost Cows N (2 <= N <= 8,000) cows have unique brands in the range 1..N. In a spectacular display of poor judgment, they visited the neig ...
分类:
其他好文 时间:
2020-02-25 00:34:58
阅读次数:
174
线段树入门 引题 有一个包含$N$个数的序列($N \leq 1e6$),给$Q(\le 1e6)$个操作,每个操作是下面两种中的一种: 区间加:给定$l,r,x$,将序列$N$下标$\in [l, r]$的数加上$x$ 区间求和:给定$l,r$,询问下标$\in [l,r]$的数的和 一种很暴力的 ...
分类:
其他好文 时间:
2020-02-20 20:30:06
阅读次数:
61
有两种操作,一是给区间内所有的数开根号,二是区间求和。 线段树单点更新,区间求和的模板~ #include<cstdio> #include<algorithm> #include<cmath> using namespace std; const int maxn=1e6+14; struct n ...
分类:
其他好文 时间:
2020-02-14 20:23:34
阅读次数:
63
题意: 给你n个数,两个操作,0为区间开方,1为区间求和 链接:http://acm.hdu.edu.cn/showproblem.php?pid=4027 思路: 如果当该区间的数都为1,我们没必要进行开方操作,因为1开方还是1,否则找到每个叶子节点,进行开方操作 代码: #include <io ...
分类:
其他好文 时间:
2020-01-21 21:48:58
阅读次数:
66
"Link" 先二分答案,这样所有的数字就都变成了$0,1$。 那么区间排序就相当于区间求和再区间覆盖了。 ...
分类:
编程语言 时间:
2020-01-15 09:38:00
阅读次数:
86