树状数组
文章平均质量分 54
ZigZagK
一个蒟蒻。
展开
-
树状数组
树状数组总结。原创 2017-04-21 19:20:28 · 653 阅读 · 2 评论 -
【剩余类+树状数组】2017.10.23杂题(liu_runda NOIP 联考 DAY1)[飞]题解
题目概述呵呵,写到一半重启了,没心情写题目概述。liu_runda NOIP 联考 DAY1 T3。解题报告先转化一下……如果某个点被 nn 条线段覆盖,则贡献为 n(n−1)2\frac{n(n-1)}{2} ,这个式子也可以理解为这 nn 条线段两两组合的方案数。所以鬼畜值(滑稽)之和其实就是能相交线段的个数。显然只有 {xi>xj|i<j}\{x_i>x_j|i<j\} 的线段才会产生贡献,这原创 2017-10-23 16:10:56 · 436 阅读 · 0 评论 -
【整体二分+树状数组】THUPC2017[天天爱射击]题解
题目概述给出 nn 块木板,每块木板为 [Li,Ri][L_i,R_i] ,被打 sis_i 次会碎掉消失。然后给出 mm 个子弹,每个子弹打到 xix_i ,问每个子弹打碎了多少木板。解题报告考虑离线。对于每个木板,我们可以二分枚举该木板被打碎的时间,用主席树验证。这样常数比较大,而由于每个木板都需要二分,所以我们会想到整体二分,这样常数就很小了。示例程序#include<cstdio>#inc原创 2017-10-06 13:57:51 · 680 阅读 · 0 评论 -
【并查集跳跃访问+树状数组】2017.3.1杂题[平方根]题解
题目概述给出一个n个元素的数列,并给出m个操作,操作有两种类型。0 x y:将x~y中的所有元素都取平方根的整数部分;1 x y:求x~y中所有元素的总和。解题报告用计算机算一下,会发现2^63-1开平方根6次就会变成1,而变成1之后再怎么开平方根都是1!所以说每个数最多开平方根6次,一旦变成1,这个数就可以无视了。怎么样能做到无视?用并查集!father[i]表示离i最近的不为1的数。对于x~y的原创 2017-03-02 20:14:19 · 577 阅读 · 0 评论 -
【DP+树状数组 or 贪心】Codeforces527D[Clique Problem]题解
题目概述给出平面上 nn 个点 xix_i ,每个点有个权值 wi(wi>0)w_i(w_i>0) ,当 |xi−xj|≥wi+wj|x_i-x_j|\ge w_i+w_j 时 i→ji\to j 有条边。求最大团(最大完全子图)。解题报告先将点按照位置排序,然后会发现若 k<j<ik<j<i 且 kk 能到 jj , jj 能到 ii ,则 kk 一定能到 ii 。证明很简单:xj−xk≥wk+w原创 2017-10-18 10:53:04 · 306 阅读 · 0 评论 -
【gcd分块+离线+树状数组】HDU5869[Different GCD Subarray Query]题解
题目概述给出序列 {An}\{A_n\} 和 mm 个询问 (L,R)(L,R) ,定义 GCD(i,j)=gcd(ai,ai+1,⋯,aj)GCD(i,j)=gcd(a_i,a_{i+1},\cdots,a_j) ,每个询问求 [L,R][L,R] 范围内所有子序列 GCD(i,j)GCD(i,j) 不相同的个数。解题报告gcd和and,or一样有分块性质,由于gcd每次至少 ÷2\div 2 ,原创 2017-09-21 20:01:59 · 307 阅读 · 0 评论 -
【AC自动机-fail树+树链合并】BZOJ3881(Coci2015)[Divljak]题解
题目概述有 nn 个字符串,第 ii 个字符串是 sis_i 。还有另一个字符串集合 TT 和 mm 个操作,操作格式如下:1.向字符串集合 TT 中加入一个字符串 SS 。2.询问 TT 中有几个字符串出现了 sxs_x 。解题报告首先我们会想到把 nn 个字符串建成AC自动机,并构造出 failfail 树。这样的话,每次新加入一个字符串 SS ,记录 SS 在AC自动机上出现的位置。对于位置原创 2017-08-08 23:11:41 · 881 阅读 · 0 评论 -
【莫队 or 离线+树状数组】BZOJ1878(SDOI2009)[HH的项链]题解
题目概述给出一个序列 {An}\{A_n\} 和 mm 个询问,每个询问求区间 [L,R][L,R] 内不同数的个数。解题报告这道题显然可以用莫队乱搞,但是还有另一种做法。记录 nxt[i]nxt[i] 表示 >i>i 且 Ai=AjA_i=A_j 的第一个 jj ,那么当 i∈[L,R]i\in[L,R] 时, nxt[i]nxt[i] 就没有贡献了。我们还会发现,如果后面询问的左端点均 >i>i原创 2017-09-17 19:58:15 · 313 阅读 · 0 评论 -
【AC自动机-fail树+离线+DFS序+树状数组】BZOJ2434(Noi2011)[阿狸的打字机]题解
题目概述有一台打字机,可以:在字符串末尾插入一个小写字母。删除字符串末尾的一个小写字母。输出当前字符串。还有 mm 个询问,每个询问 x,yx,y 表示求第 xx 个输出的字符串在第 yy 个输出的字符串中的出现次数。解题报告观察打字的过程,我们发现这其实就是在构造一棵Trie:在字符串末尾插入一个小写字母 →\to 在当前节点 nownow 扩展一个字符。删除字符串末尾的一个小写字母原创 2017-08-08 11:54:46 · 558 阅读 · 0 评论 -
【贪心+堆+树状数组】JXOI2017[加法]题解
题目概述有一个序列 {an}\{a_n\} 和 mm 个线段,你可以选 kk 个线段,每个选择的线段 [l,r][l,r] 可以使 aa 中的 [l,r][l,r] 都加上 AA (给出),找出一个方案使得 aa 中最小值最大。解题报告由于是求最小值的最大值,所以我们想到二分答案 midmid ,这样我们就知道序列中每个数还需要加多少次才能 ≥\ge midmid ,设第 ii 个数的次数为 ti原创 2017-08-14 21:45:49 · 1271 阅读 · 0 评论 -
【反序表+树状数组】Codeforces Round #441(Div.2)D[Sorting the Coins]题解
题目概述刚开始有一个全是 11 的序列,现在给出 mm 操作,每个操作把一个位置改成 00 ,每次操作完成后求冒泡(从大到小)次数。解题报告这道题明显是个伪反序表(不是排列),但是可以沿用反序表的性质:冒泡的次数 =Bmax=B_{max} ( BB 是反序表)。由于只有 00 和 11 ,所以反序表的最大值位置 maxmax 我们是可以确定的,那就是最后一个 00 的位置。所以每次维护最后一个 0原创 2017-10-17 14:30:14 · 259 阅读 · 0 评论