题解: 一道优秀的题目 有几种做法: 1.维护后缀和 刚开始我想的是维护前缀和 然后用$sum[x]-sum[y]>=dep[x]-dep[y]$来做 但是这样子树赋值为0这个操作就很难进行了 因为你查找的是链上最小值,所以不改子树上面的节点是做不了的 那我们换一种方式,单点改,查询区间最大后缀和 ...
分类:
其他好文 时间:
2018-12-15 19:56:18
阅读次数:
157
"传送门" 做过上一道题之后,这个题就没啥难度了。就是加了个枚举的下界。 就像维护二维前缀和一样,直接把结果加加减减即可,具体方法和上一题一样。直接看代码。 cpp include include include include include include include include inc ...
分类:
其他好文 时间:
2018-12-15 10:31:26
阅读次数:
133
@ "toc" 树状数组的引入 相信读者一定知道什么是前缀和,形如一串数$a1,a2...,an,sum[i]=a[1]+a[2]+...+a[i]$ 前缀和在算法的优化上占有很重要的地位,一般就会预先对数据进行预处理运算以后,再在运算过程中用$O(1)$时间调用,这样的操作很大程度上避免了实际运算 ...
分类:
编程语言 时间:
2018-12-14 17:23:24
阅读次数:
286
二维前缀和 || 类子序列和的DP 后者快,压二维为一维的方法 ...
分类:
其他好文 时间:
2018-12-14 13:08:13
阅读次数:
128
题目大概是给一些折线,问安排多少个保安才能监控全部折点。 预处理出能否看到进行区间dp即可,转移用前缀和优化 cpp include include include using namespace std; define db double const int INF = 0x3f3f3f3f; c ...
分类:
其他好文 时间:
2018-12-12 23:45:23
阅读次数:
174
题解: 首先考虑三维前缀和 我们需要$2^t$来容斥 但我们可以做到$t$,正确性证明在后面 另外一种一般是状压dp,$g[i]=\sum{j|i|}{S} f[j]$ 这个东西暴力是$3^n$的,我们利用和上面同样的方法做到$2^n*logn$ ...
分类:
其他好文 时间:
2018-12-12 12:54:11
阅读次数:
186
题解: 注意到$ai$只有$1e6$这件事情肯定要枚举和这个有关的东西 考虑枚举$ai&aj$的值就可以了 那么这个集合一定是ai,aj的子集 于是我们对每个集合从大到小枚举丢掉一位转移就行了 这实际上放缩了条件但显然最大值不变 这题并不用用到高维前缀和。。但第一次听说于是学习了一下 ...
分类:
其他好文 时间:
2018-12-12 11:48:26
阅读次数:
167
所谓带修主席树,就是用树状数组的方法维护主席树的前缀和 思路 带修主席树的板子 注意数据范围显然要离散化即可 代码 cpp include include include using namespace std; struct Node{ int sz,lson,rson; }PT[100100 4 ...
分类:
其他好文 时间:
2018-12-12 00:28:28
阅读次数:
191
"传送门" ~~解锁成就:ynoi的题目都做到过原题~~ 因为$n$很小,我们可以用$sss[u][i]$表示到点$u$的距离不超过$i$的点的集合,这个可以用bitset存,然后先一遍bfs,再做一个前缀和就可以处理好了 询问的话,把所有的$sss$并起来,然后求一下里面$1$的个数就好了 顺便一 ...
分类:
其他好文 时间:
2018-12-12 00:18:37
阅读次数:
150
这道题考察的实际就是一个简单的前缀和问题。值的注意的还是取模的问题。两个数取模,以防万一,出现对负数取模的问题 可以先加上mod然后再对mod取模。 能long long就不int ...
分类:
编程语言 时间:
2018-12-11 01:40:11
阅读次数:
195