树状数组/线段树
文章平均质量分 70
数据结构
Demoo.
来记录不会的题啦
展开
-
T225362 《山茶文具店》
对于每次查询,输出一个数,表示字符串 ss 下标从 xx 到 yy 形成的十进制数在模 10^9+7109+7 下的数。假设我们查的区间是2-5,但是当前结点的区间是2-3,那么我们应该得到的是2300。那么u的sum就是左子树的sum*10的(右子树的长度)次幂+右子树的sum。第一次修改之前的两次询问,都是 s=12345s=12345 下的询问。比如u=12,那么左子树的sum就是1,右子树的sum就是2。” ——《山茶文具店》其实得到的值是u的sum*10的(r-u的r)次幂。原创 2022-11-16 15:30:58 · 245 阅读 · 0 评论 -
P6225 [eJOI2019] 异或橙子
最初,A=[1,2,3]A=[1,2,3],询问结果为 1\oplus 2\oplus 3\oplus(1\oplus 2)\oplus (2\oplus 3)\oplus(1\oplus 2\oplus 3)=21⊕2⊕3⊕(1⊕2)⊕(2⊕3)⊕(1⊕2⊕3)=2。异或的柿子是2^3^4^5^(2^3)^(3^4)^(4^5)^(2^3^4)^(3^4^5)^(2^3^4^5)把添加操作改为异或,异或的参数是i a[i]^x(因为异或自己会抵消自己的贡献),然后把a[i]改为x。异或的运算规则如下。原创 2022-10-14 17:26:40 · 500 阅读 · 1 评论 -
P5367 【模板】康托展开(树状数组)
求 1\sim N1∼N 的一个给定全排列在所有 1\sim N1∼N 全排列中的排名。对于100\%100%数据,1\le N\le 10000001≤N≤1000000。一行一个非负整数,表示答案对 998244353998244353 取模的值。对于50\%50%数据,1\le N\le 50001≤N≤5000。第二行 NN 个正整数,表示 1\sim N1∼N 的一种全排列。对于10\%10%数据,1\le N\le 101≤N≤10。思路:直接套用康托展开公式,一个大小为n的全排列的。原创 2022-10-12 17:21:41 · 339 阅读 · 0 评论 -
P3801 红色的幻想乡(树状数组)
蕾米莉亚每次站在某一个地区上,向东南西北四个方向各发出一条无限长的红雾,可以影响到整行/整列,但不会影响到她所站的那个地区。询问左上点为(x1,y1)(x1,y1),右下点为 (x2,y2)(x2,y2) 的矩形范围内,被红雾遮盖的地区的数量。(这里需要对x和y两个坐标写不同的add 和sum函数,注意sum函数的i的范围不同,对于x是n,对于y是m )如果这个数组记录是1的话就在记录x的树状数组的x的位置-1,如果是0的话就在x的位置+1。对于每一个操作 22,输出一行一个整数,表示对应询问的答案。原创 2022-10-11 16:15:04 · 207 阅读 · 0 评论 -
P5200 [USACO19JAN]Sleepy Cow Sorting G
当前,这些奶牛以 p_1,p_2,p_3,\ldots,p_Np1,p2,p3,…他想要重新排列这些奶牛,使得她们的顺序变为 1,2,3,\ldots,N1,2,3,…第二行包含 KK 个空格分隔的整数,c_1,c_2,\ldots,c_Kc1,c2,…输入的第一行包含 NN。第二行包含 NN 个空格分隔的整数:p_1,p_2,p_3,\ldots,p_Np1,p2,p3,…,pN,表示奶牛们的起始顺序。那么对于没有确定的数,他需要挪动的步数是:没有确定的数+已经确定但是比他小的数。原创 2022-10-10 20:36:22 · 230 阅读 · 0 评论 -
P1996 约瑟夫问题 (树状数组)
nn 个人围成一圈,从第一个人开始报数,数到 mm 的人出列,再由下一个人重新从 11 开始报数,数到 mm 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。(因为删除了一个所以now要-1,然后第m个数的话就加上m,-1%op+1是因为我们需要映射到1~op)要用op来记录一下当前还有几个数,每次找到一个数组的个数--,找到的数的个数--所以我们要用一个now来记录当前我们需要找的第k大的数。因为每次到第m个人的时候我们都要从1重新开始。用树状树状来记录每个数的个数。原创 2022-10-09 19:23:02 · 348 阅读 · 0 评论