随笔分类 - 树论——树状数组
摘要:闲谈: 最后一个星期还是不浪了,做一下模拟赛(还是有点小虚) #30.candy 题目: 有一个人想买糖吃,有两家商店A,B,A商店中第i个糖果的愉悦度为Ai,B商店中第i个糖果的愉悦度为Bi 给出n,W,表示每个商店都有n个糖果且两个商店的每个糖果的价格都是W 求出最大的min(Sa,Sb)-D*
阅读全文
摘要:【传送门:BZOJ3529】 简要题意: 给出一张数表,数表上第i行第j列的格子上的数是所有同时整除i和j的自然数的和 给出Q个询问,每个询问输入n,m,a,求出n*m的数表中格子上的数<=a的所有格子的和 题解: 设F(x)为x的约数和,设n<m 实际上就是求$\sum_{i=1}^{n}\sum
阅读全文
摘要:【传送门:51nod-1213】 简要题意: 给出平面直角坐标系中的n个点,求出这n个点的曼哈顿距离构成的完全图的最小生成树的大小 题解: 曼哈顿距离最小生成树的证明 实际上有影响的边远远小于n2,在处理边的时候用树状数组维护就好了 最后对得到的边做kruscal就行了 参考代码:
阅读全文
摘要:【传送门:BZOJ1106】 简要题意: 有n种数,每种数有两个,给出一个2*n的序列,表示每个数在栈中的位置,可以任意交换相邻两个位置的数,若相邻两个数为同种数,则这两个数从栈中移除,然后所有上面的数都会掉落并形成连锁反应,求出移除所有数的最少步数 题解: 树状数组水题 若当前第i个位置出现的这个
阅读全文
摘要:【传送门:BZOJ4240】 简要题意: 给出一个长度为n的序列,可以将相邻的数交换位置,要求通过最少交换次数使得这个序列呈左边段不递减,右边段不递增 题解: 树状数组+贪心 将每个数一开始的下标为原本的位置,最后得到的序列的逆序对数就是操作的次数 首先得到的序列肯定是最大的在中间,第二大的在旁边。
阅读全文
摘要:【传送门:BZOJ2141】 简要题意: 给出一个长度为n的序列,一开始先求出逆序对数 然后给出m个操作,每个操作输入l,r,要求交换第l和第r个数,然后再求出逆序对数 题解: 树状数组处理逆序对数问题 因为每次交换l和r的时候,实际上除了l到r的区间外,其他是不受影响的,所以我们分块来处理 然后树
阅读全文
摘要:【传送门:BZOJ1452】 简要题意: 给出一个n*m的矩阵,共有两种操作: 1 x y c将第x行第y列的数改为c 2 x1 x2 y1 y2 c求出第x1行第y1列到第x2行第y2列值为c的格子数 题解: 第一次写二维树状数组,和一维差不多 a[x][y][c]表示第1行第1列到第x行第y列值
阅读全文
摘要:【传送门:BZOJ3289】 简要题意: 给出n个数,有m个询问,每个询问输入l,r,求出l到r中的所有数通过与相邻数交换变为上升序列的交换次数 题解: 一开始想用在线算法做 想不出来就用离线了 就想到用莫队 然后对于操作的继承,发现: ①在一列数的后面添加一个数,逆序对数会增加数列中比它大的数的个
阅读全文
摘要:【传送门:BZOJ2743】 简要题意: 给出一个长度为n的数列,总共有c种不同的数,给出m个询问,每个询问输入l,r,输出数列中l到r中出现的次数大于等于两次的数的个数 题解: BZOJ1878的改版:题解 我们还是用离线+树状数组的方法来做 一样设next[i]为第i位置上的数下一次出现的位置
阅读全文
摘要:【传送门:BZOJ1878】 简要题意: 给出一个长度为n的数列,给出m个询问,每个询问输入l,r,输出数列中l到r的不同的数的个数 题解: 看这数据范围就不能用在线来做,那就只能离线了 很显然就是树状数组 首先将询问按照l从小到大的排序排一遍 设一个数组next,next[i]表示下一个与第i个数
阅读全文
摘要:【传送门:BZOJ2434】 简要题意: 给出一个串,然后这个串有28种字符,26个小写英文字母和'B','P'两个字母 我们定义一个模式串(一开始这个串是空的) 假如当前输入的字符是小写英文字母的话,就在模式串的末尾加上这个字母 如果是'B',就把模式串的末尾给去掉 如果是'P',就把当前模式串当
阅读全文
摘要:【传送门:BZOJ3192】 简要题意: 给出两个堆,两个堆里的所有数保证没有相同的,可以将其中一个堆的堆顶移到另一个堆的堆顶,花费为1,但是如果当前要移动的数为两个堆的最大值,则不需要花费,并且将这个数删除,求出将所有数删除的最小花费 题解: 其实可以将两个堆合并成一个序列,其中第一个堆要倒着来,
阅读全文
摘要:【传送门:caioj1442】 简要题意: 给出n个点,每个点都有一个权值,m个操作,操作有两种:第一种是询问l到r的第k小的值,然后输出这个值,第二种是将第x个点的值改为k 题解: 又是一道主席树的例题,不过简直比前两题(caioj1441,caioj1443)难不止一点点 看到第一种操作,我们可
阅读全文