(d) hdu1698 Just a Hook 如在阅读本文时遇到不懂的部分,请在评论区询问,或跳转 线段树总介绍 注意一开始整个区间都是1 此题过水不予讲解 代码 ...
分类:
其他好文 时间:
2019-07-22 20:05:50
阅读次数:
105
1 #include 2 #include 3 using namespace std; 4 5 long long n,m; 6 long long a[500009]; 7 long long c[500009],d[500009]; 8 long long lowbit(long long x... ...
分类:
编程语言 时间:
2019-07-21 16:29:03
阅读次数:
411
线段树重要思想 线段树单点修改的本质就是区间修改 本题是对所有数取模,如果对区间和取模,必定会影响子节点,那么便只能对子节点取模 但是如果一个一个取模,便会有超时的危险 那么我们就可以利用剪枝的思想,对小于mod的数/区间,直接返回 只对大于mod的数进行取模,那么便能降低复杂度。 ...
分类:
其他好文 时间:
2019-07-17 00:07:23
阅读次数:
65
lca的定义不在过多解释, 代码如下: 树上叉分:用于树上两点以及之间的路径上各个点点区间修改: 例如:(x,y)之间路径上的点都加一,可以将x++,y++,lca(x,y)--,fa[lca(x,y)]--;最后统计各个点的权值即可. ...
分类:
其他好文 时间:
2019-07-03 13:50:56
阅读次数:
94
上一节介绍了点修改与区间查询的线段树,事实上,线段树还可以做得更多。本节讨论区间修改问题。 给出一个$n$个元素的数组$A_1,A_2,...,A_n$,你的任务是设计一个数据结构,支持以下两种操作: $Add(L,R,v)$:把$A_L,A_{L+1}, ..., A_R$的值全部增加$v$ $Q ...
分类:
其他好文 时间:
2019-06-29 00:44:33
阅读次数:
91
https://www.luogu.org/problemnew/show/P4577 带区间修改的线段树合并 ...
分类:
其他好文 时间:
2019-06-24 21:10:15
阅读次数:
110
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698 通过这个题练习了基本的Pushdown的操作 参考着蓝书的模板敲了一下,需要修改的地方就是:这里的区间修改是直接改变值而不是增加值 把+=改成=即可。 1 #include <cmath> 2 # ...
分类:
其他好文 时间:
2019-06-24 12:26:52
阅读次数:
117
最一般树状数组能做到的操作是单点修改,区间求和,都是log(n)级别的。原理就是用树状数组维护a[i]和它的前缀和的关系。 想要做到修改区间,求单点值也很简单,用树状数组维护a[i]的差分数组d[i]和它的前缀和的关系既可。 那么,如何同时做到区间求和,区间修改呢? 有人可能会说了,如果是区间求和区 ...
分类:
编程语言 时间:
2019-06-23 15:59:09
阅读次数:
188
Comet OJ Contest 5 总有一天,我会拿掉给$dyj$的小裙子的. A 显然 $ans = min(cnt_1/3,cnt_4/2,cnt5)$ B 我们可以感性理解一下,最大的满足条件的$x$不会太大 因为当$x$越来越大时$f(x)$的增长速度比$x$的增长速度慢得多 其实可以证明 ...
分类:
其他好文 时间:
2019-06-16 15:28:29
阅读次数:
81
分析 对于一条信息 $x,y$,将两者之间的牛的高度 $ 1$. 考虑差分,将区间修改转化为单点修改 注意,排除重复信息 cpp include include include using namespace std; const int N=10004; int n,r,h;//I 省略 int ...
分类:
其他好文 时间:
2019-06-15 09:47:14
阅读次数:
76