树状数组
DOFYPXY
这个作者很懒,什么都没留下…
展开
-
[2017湖南集训7-9]大佬的问题 (数点问题)
题目大意:给出三个排列A,B,C,问同时满足Ax < Ay,Bx < By,Cx < Cy的数对有多少。 O(n log^2 n)的做法:经典的三维数点问题,排序一维,CDQ分治一维,树状数组一维。 O(n log n)的做法:因为均为排列,所以没有相同的元素,设S(x,y)=[Ax < Ay]+[Bx < By]+[Cx < Cy]。显然max(S(x,y),S(y,x))的取值只有2或3,假原创 2017-07-09 19:43:36 · 640 阅读 · 0 评论 -
[2017纪中11-6]奇怪的队列 树状数组+二分/线段树
题面 考虑先按高度排序,那么第i位置的人一共有n-i个人比他高,为了方便,这个人报的数字t=min(t,n-i-t)。 那么从小到大把这些人放进序列里。每次放在当前序列t的位置上,然后把这个位置删除即可。 可以用树状数组+二分搞。复杂度O(nlog^2n)。 线段树正解 nlog^2n代码:#include<iostream>#include<cstdio>#include<algor原创 2017-11-07 15:10:15 · 484 阅读 · 0 评论 -
[2017纪中11-2]救赎 dfs序+树状数组 / 递推
题面 考场O(nlogn)做法: 对于一棵有根树,考虑每个点和它的儿子们的那些边的期望,容易得出答案为: 假如建出来的树以1为根,计算出子树大小sz和儿子个数num,那么考虑一个点对不同点为根节点的答案的贡献: 1、根节点不在它的子树中,上式size=sz[x],|son|=num[x]。 2、根节点为它自己,上式size=n,|son|=num[x]+1。 3、根节点在它的某个儿子p的原创 2017-11-02 19:29:35 · 349 阅读 · 0 评论 -
[BZOJ3110][ZJOI2013]K大数查询 树套树/CDQ分治
树套树做法: 注意到权值很小,于是外层开权值线段树,内层是一个动态开点的区间线段树,维护权值在[L,R],位置在[l,r]的数一共有多少个。 修改就是内层的一个线段树上区间加一。 查询时,外层线段树中先判断左子树中够不够k个数,若够则往左子树递归,不够就减一下后往右子树。 代码(MLE):#include<iostream>#include<cstdio>using namespace原创 2017-12-03 17:38:56 · 324 阅读 · 0 评论 -
[BZOJ1145][CTSC2008]图腾totem 树状数组
题目要我们求1324−1243−14321324-1243-1432 =(1x2x−1423)−(12xx−1234)−(14xx−1423)=(1x2x-1423)-(12xx-1234)-(14xx-1423) =1x2x−12xx+1234−14xx=1x2x-12xx+1234-14xx =1x2x−1xxx+13xx+1234=1x2x-1xxx+13xx+1234 我们可以先用树原创 2017-12-24 09:28:27 · 562 阅读 · 0 评论 -
[联合集训6-22] monkey_sort 概率与期望+矩阵快速幂+树状数组
根据期望的线性性,我们只需对于每两个位置(i,j)(i,j)(i,j)计算出其相对位置改变的概率,并根据aiaia_i和ajaja_j的大小关系统计贡献即可。于是我们不难得到一个O(n2k)O(n2k)O(n^2k)的DP。设fi,j,kfi,j,kf_{i,j,k}表示当前(i,j)(i,j)(i,j)两个位置再进行kkk步交换操作使得i&amp;gt;ji&amp;gt;ji&gt;j的概率(边界就是fi,j,...原创 2018-06-22 21:58:08 · 457 阅读 · 0 评论 -
[联合集训6-22] 路灯 整体二分+扫描线树状数组
先给每个点重新设一个坐标(就是把给定的两个边界强行定成横纵坐标找),这个坐标可以直接通过和两个边界叉积得到。 于是点iii的答案就是其左下方所有点答案的第kikik_i小值,如果不足kikik_i个点答案就是iii。 于是我们可以考虑整体二分,二分一个时间MidMidMid,把编号≤Mid≤Mid\le Mid的点强行点亮,看剩下的点中有多少个也能跟着亮。这个二维数点可以横纵坐标分别为一二关键...原创 2018-06-22 22:12:20 · 317 阅读 · 0 评论