You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number ...
分类:
编程语言 时间:
2020-01-14 23:36:47
阅读次数:
105
传送门 "Luogu" 解题思路 区间开方以及区间求和。 考虑用线段树来做。 开方操作看似没有任何结合律可言,但这题有另外一个性质: 一个数的初始值不超过 $10^{18}$ ,而这个数被开方6次左右就可以到1或0,并且1和0都是不需要再开方的。 所以我们记一下每个节点代表区间的最大值,若该值小于等 ...
分类:
其他好文 时间:
2019-10-27 10:39:15
阅读次数:
62
题目传送门 考虑用线段树进行区间求和,暴力修改。 我们发现开根号操作并不能直接像加减一样直接修改,但是他有一个非常良好的性质,对于一个小于等于1e12的数,其进行下取整开根操作至多不超过6次就可以到1,对于1,我们显然不需要进行任何操作,因此修改的复杂度是O(nlogn),数据只有1e5,因此不用在 ...
分类:
其他好文 时间:
2019-10-24 10:24:05
阅读次数:
51
题面:http://poj.org/problem?id=2763 cpp 区间求和,修改单边.不加快读见祖宗. Code: include include include include include include include include using namespace std; co ...
分类:
其他好文 时间:
2019-10-21 23:23:29
阅读次数:
169
传送门 一句话题面:给定一个序列,维护两种操作。区间取模和区间求和。 这道题不能使用Lazy标记!!! 不是不用,是不能!!! mod运算不满足分配律,因此无法使用Lazy标记。 但是如果单纯只写一个区间求值和一mod到底的mod操作,会T到你怀疑人生。 虽然mod不满足分配律,但是mod有一个性质 ...
分类:
其他好文 时间:
2019-10-12 18:41:51
阅读次数:
113
这是Leetcode第307题,给一个数组,然后求指定下标之间的数之和,已知数组中的值可以更新,并且更新和求和操作会被频繁调用。 这是一道线段树的基础题,线段树是一种二叉搜索树。它将一段区间划分为若干单位区间,每一个节点都储存着一个区间。它功能强大,支持区间求和,区间最大值,区间修改,单点修改等操作 ...
分类:
其他好文 时间:
2019-10-05 14:37:10
阅读次数:
79
我貌似曾经说过我是个只会做水题的巨型辣鸡.. 这次证明我水题都不会做.. T1 平均数 区间数$n^2$ 枚举是不可能了 可是好像没有无用的计算量.. 刚想到这里,此时开考15min 看见天皇比手势说他阿卡了?? emmmmm??? (脏话) 是不是区间求和的时候可以快一点.. 那就前缀和优化一下? ...
分类:
其他好文 时间:
2019-09-27 10:36:36
阅读次数:
76
题意 给一个序列,支持两个操作:将一段区间中的每一个$a_i$赋值为$c^{a_i}$,$c$ 给定;区间求和,对mod取模,不保证mod为质数 思路 显然 线段树 ,然而此题先要单点修改 计算中指数会非常大,但是本题mod又不是质数,于是可以套用欧拉定理的推论: $a^{b}≡a^{b\% \va ...
分类:
其他好文 时间:
2019-09-20 15:11:31
阅读次数:
71
不要当线段树都不会敲的菜鸡了。 线段树所要提供的是查询一个区间 内的信息,并允许修改操作。 节点数据向上更新 对于区间求和: 对于区间求最值: 节点懒惰标记向下传递 对于区间求和: 对于区间求最值: 建树 更新: 查询: ...
分类:
其他好文 时间:
2019-09-05 00:35:52
阅读次数:
100
hdu1166 敌兵布阵 题意: 读入一个数组,完成单点加,单点减,和区间求和三种操作。 解法: 明摆着的一颗线段树,SB题。 CODE: cpp pragma GCC optimize(2) include include include include using namespace std; ...
分类:
其他好文 时间:
2019-08-22 21:53:16
阅读次数:
68