
数据结构
值得掌握的数据结构题
美少女zss
ccpc绵阳铜,icpc西安银,jscpc江苏金。
展开
-
2018南京多校-Taotao Picks Apples-(预处理)
J题意:就是给你一排n个苹果,每个苹果有个大小,现在小A就从第一个开始拿,如果这个苹果是第一个苹果,那么必拿,如果这个苹果比上一次拿的大,那么必拿。现在给你m次独立的查询,每次让va[a] = b,然后问你小A会拿多少个苹果。思考:代码:总结:多多思考,注意细节。原创 2022-10-24 21:56:59 · 173 阅读 · 0 评论 -
2021昆明-Easy String Problem-(正难则反+莫队)
就是给你一个长度为n的字符串,然后给你m次查询,每次给你一个l和r,现在你可以删除任意包含[l,r]的子序列,问你删除后,可以产生多少种不同的字符串,空串也算一个。多多思考,相信自己。原创 2022-10-22 22:22:48 · 234 阅读 · 0 评论 -
CFdiv2-Intersection and Union-(线段树+转化求贡献)
就是给你n个区间,每个区间包含一段连续的值,然后这就是一个集合。现在有个式子|(((S1 op1 S2) op2 S3) op3 S4) …opn−1 Sn|。然后其中的op,分别可以是∪:两个集合元素的并集。∩:两个集合的元素交集。⊕:两个集合中元素只在某一个集合中出现的所有元素。种情况中,把答案的总和求起来。对于那个公式,就是问你经过顺序操作后,整个集合中还有多少元素。都有3中选择,现在问你3。原创 2022-10-19 20:45:52 · 279 阅读 · 0 评论 -
2019CCPCFinal-Russian Dolls on the Christmas Tree-(树上启发式合并或LCA维护贡献)
就是给你一个树,每个点的编号i就是一个大小为i的小盒子,i可以装进i+1里面,但是不能直接装到i+2里面,因为少了一个i+1。现在就是问你,对于每一个子树这个子树的所有的盒子,能合并的都合并后,会剩下几个盒子。原创 2022-10-16 21:49:09 · 201 阅读 · 0 评论 -
CFdiv3-Multi-Colored Segments-(线段树+multiset)
就是给你n个线段,每个线段有个a,b,c,代表左端点,右端点,线段的颜色。现在问你每个线段距离其他颜色的线段中最小的距离是多少。如果有点交叉那么距离就是0。多多思考,不用觉得题目难,思考思考思路,一个不行再换,这样可以积累许多以后可能用到的操作。原创 2022-10-14 21:20:34 · 434 阅读 · 0 评论 -
2021台湾-Flip-(线段树区间合并的理解)
就是给你一个01数组,然后给你m次操作,每次要么是让[l,r]这段区间的0和1都翻转,要么是查询[l,r]这段区间有多少好的子区间。好的区间定义为,这个区间的0和1是间隔的,也就是没有连续>=2个的0或者1。就是给你一个数组,然后又m次操作,每次操作要么是让第x个数变成y,要么是查询[l,r]区间最大值是几,并且有多少个。原创 2022-10-04 14:52:33 · 188 阅读 · 0 评论 -
2020绵阳-Joy of Handcraft-(调和级数+线段树)
t+t]亮,也就是先亮t秒再关t秒再亮t秒…然后亮的时候亮度为x。现在问你从1到m每个时间点亮的灯泡中亮度最大的亮度是多少,也就是最大的x是多少。就是给你n个灯泡,一共m个时间。每个灯泡有两个参数t和x,灯泡会在[2k。多多思考,联想联想相关的知识。原创 2022-09-07 21:19:46 · 173 阅读 · 0 评论 -
ABC-Exactly K Steps-(树的直径+lca)
就是给你一个树,然后给你m次询问,每次让你输出一个与a距离为b的的点,如果多个输出任意一个,如果没有那么输出-1。多多思考,多画图看看,画图会让思维更明显,而且就算不对,也会一点一点推进,慢慢就把一些特殊情况考虑了。原创 2022-09-04 16:36:34 · 278 阅读 · 0 评论 -
CFdiv2-Tokitsukaze and Strange Rectangle-(树状数组+组合数)
就是给你n个坐标,然后每次你可以选择xl,xr,yl三条线形成一个桶,把里面所有的点都包括,问你一共可以形成多少不同种类的桶,也就是多少个不同的集合。原创 2022-09-02 16:15:14 · 150 阅读 · 0 评论 -
2020长春-Strange Memory-(启发式合并+位运算)
给你一个树,每个点有个权值原创 2022-08-31 19:51:34 · 188 阅读 · 0 评论 -
杭电多校-Loop-(不确定性贪心+线段树)
然后我就可以从前往后遍历最大值的序列,如果我扔掉的序列的数大于当前遍历的数,那么我就可以先放这个仍的数,因为每次我都往后仍嘛,我就让它扔在这。我就可以在s[maxn]找到第一个>=i的位置,为啥是第一个,因为我处理第一个就够了,剩下的k留给后面的。要先输出当前固定序列的值,因为扔掉的数最大值就那么大了,但是固定序列的最大值后面可能还会更大呢,所以这里是个细节。应该仍在靠前的地方,其实不会,因为第一次你去的是[1,k+1]的最大值,那么这个你仍的数肯定不会出现在前面。,这个题目也是用的这种操作。...原创 2022-08-09 23:25:32 · 171 阅读 · 0 评论 -
牛客多校-Eezie and Pie-(倍增+树上差分)
当时写的时候写顺手了,直接当数组用了。由于是对每个点都输出答案,我就总感觉是树上启发式,但是好久没用了,有些淡忘,但是我看了看以前做过的启发式的题,感觉这题不能用启发式啊,因为每个点他所作的贡献并不是全局的,他做的贡献还要和祖宗节点比一下大小,如果保质期够大才行,但是启发式合并不行,因为你要保证每个点的贡献在不同的子树上是一样的才行。给你一个树,根节点为1,然后每个点可以做蛋糕,但是只能送到从根节点到这个点的最简路径上的点,也就是1到当前点这条链上的点。多多思考,仔细检查,认真仔细,别慌,不用急。...原创 2022-08-06 20:24:33 · 198 阅读 · 0 评论 -
CFdiv1+2-Bash and a Tough Math Puzzle-(线段树单点区间维护gcd+总结)
4.所以这个题也可以这样,直接在树上搜,这样复杂度是log(n)的,因为每次都可以扔掉一半,只去不合法的那一半。一种是就看看有多少非法的个数,累加起来,每次左右搜,但是这样两边都会搜,但是你写上如果这段区间都合法就return0就可以,这样就不会搜下去了。实际上,应该是看是否为x的倍数,因为6612也是接近3的,因为我把其中一个改成3,剩下的区间gcd都是3的倍数也可以。就是有一个n的数组,然后有m次操作,有两种,一种是让va[a]=b,一种是问你l到r这段区间的gcd是否接近x。.........原创 2022-07-28 16:27:58 · 265 阅读 · 0 评论 -
CFdiv1+2-Pathwalks-(树状数组+线性dp)
既然要给的边的顺序,那么肯定就是按顺序枚举边,从前往后,定义dp[i]为选第i条边的最大值。那么到第i个边,要么是从这个边开始,要么是从前面的边来转移,从终点是这个边的起点的边来转移,同时要保证那条边的权值...原创 2022-07-25 23:03:34 · 214 阅读 · 0 评论 -
ABC-At Least One-(预处理+树状数组)
求这个可以O(n),因为每次只走一个,也就是左端点加1,那么右端点看看到底要到哪。到哪可以根据删去i这个点,看看i这个点包含多少点的左端点,那么这个卡牌的左端点没了,那么只能要右端点。如果一个卡牌的右端点也小于当前的i,那么后面的都不合法了,也就是有一个卡牌不满足。对于比如l,r这段区间可以,那么就让(r-l+1,m-l+1)这些f的答案加1。定义f(i)为,长度为i且连续的一段子序列,然后有多少给这样的子序列是好序列,好序列的概念就是,对于任意一张卡片,卡片上至少有一个数字在这个序列中。...原创 2022-07-17 22:24:50 · 141 阅读 · 0 评论 -
CFdiv1+2-Restore Permutation-(二分+树状数组维护前缀和)
题意:就是一个数组是全排列,但是只给你说这个点前面所有比他小的数的总和室多少。现在让你根据条件把这个全排列求出来。原创 2022-07-14 21:09:36 · 122 阅读 · 0 评论 -
CFdiv1+2-Let Them Slide-(线段树)
题意:就是给你n行m列的表格,每行有一个滑块,然后对于每一列,求这一列的总和最大。对每一列单独去看,滑块可以任意滑动,没有滑块的位置就是+0,有滑块的位置就加滑块这个位置的数。......原创 2022-07-14 20:26:00 · 110 阅读 · 0 评论 -
CFdiv3-Split Into Two Sets-(二分图或并查集)
E题意:就是给你n个牌,每个牌上有两个不超过n的数组,现在问你是否可以吧n个牌分成两组,每组中的所有数字都不一样。思考:刚开始看的时候感觉直接暴力就可以,实际上卡死。当然发现每个数如果出现次数>=3肯定也是不行的。然后并查集就是如果a和b在一个卡牌上,那么他们在一个集合里面,看看某个集合里面有多少数,如果是奇数个数字,那么肯定某个数在这里面出现了两次,但是只算了一次,因为一个集合里面必须是偶数个数字。所以最后判断一下就可以了。对于二分图,刚开始我想二分图的话,是想把每个卡牌看成点,但是这样根本无法建图原创 2022-07-11 14:52:03 · 563 阅读 · 0 评论 -
Acwing周赛57-最长连续子序列-(二分or树状数组)
最长连续子序列题意:就是给你一个数组,问你最长的连续子序列,使得这一段区间的和>区间长度*100。思考:当时看到这题就是一眼题,全部减去100,然后求>0的子区间。对于最长,用个树状数组就行了。和以前做过的这题一样:小阳买水果。然后这个题卡了nlongn的做法,一直超时。然后想这也不是二分呀,二分答案满足单调性吗,一联想以前的那种,就是当前答案不行的时候,不一定右边的答案不行,所以就感觉不对。实际上这题,对于当长度为5的时候有方案满足,那么长度为6的时候是可以去式的。也就是当5不行的时候,6肯定也是不原创 2022-06-25 21:28:43 · 161 阅读 · 0 评论 -
牛客练习赛85-哲学家的沉思-(上升子序列变形+树状数组+线段树+离散化+set)
C题意:就是给你一个数组。接下来他会进行 qqq 次询问,每次询问将 给出两个数字 lll 与 rrr ,要你把 [l,r][l, r][l,r] 区间划分为若干个片段[l1,r1],[l2,r2],…,[lk,rk]\left[l_{1}, r_{1}\right],\left[l_{2}, r_{2}\right], \ldots,\left[l_{k}, r_{k}\right][l1,r1],[l2,r2],…,[lk,rk] 。要求对于任意一个片 段 [li,ri],a[li]\l原创 2022-05-12 20:32:02 · 202 阅读 · 0 评论 -
2020浙江省赛-Bin Packing Problem-(线段树)
B题意:就是有n个物品,然后有体积为m的盒子,然后有两种算法。第一种,顺序遍历每个物品,找到第一个能装下它的盒子,如果没有,那么就新添一个盒子。第二种,顺序遍历每个物品,找到能装下它的提及剩余最小的盒子,如果没有,那么就新添一个盒子。问你两种算法分别要多少种盒子。思考:对于第二种很简单,就是multiset跑一遍就行了。对于第一种,刚开始我还想vector,但是vector要满足是升序的呀。所以就想到了线段树,如果最大值都装不下,那么新开一个盒子。如果能装下,那么就去装,对于怎么找到第一个大于它的点原创 2022-05-12 10:29:24 · 361 阅读 · 0 评论 -
ABC-Prefix Equality-(思维转化+树状数组维护最值)
E题意:就是给你两个数组va和vb,现在又给你m个查询,每次问你va数组的前a个数组成的set和vb数组前b个数组成的set是否相同。思考:刚开始我以为是开个map第一位是位置,第二位就是set,然后空间复杂度是n*n的,但是题目给的1024MB,以为能冲过去。实际上对于set放到map里面时间也是比较大的,所以没那么简单。然后我就想,让前a和和前b个是否相同,可以直接在va数组每个下标维护这个数在vb中出现的最小位置。这样直接查询1到a的最大值是否<=b就行了,这样就能满足前面a个所有数都在原创 2022-05-09 12:53:33 · 412 阅读 · 1 评论 -
2020秦皇岛-Exam Results-(二维偏序+树状数组+离散化)
E题意:就是给你n个人,每个人有两个值分别是最大值和最小值。然后每个人选择一个值,其中这n个人选的值最大的那个*m/100是及格线,现在问你最多有多少人可以及格。思考:刚开始还以为是啥二分题去check啥的。其实就是去考虑哪个值当最大值,然后就看一共有多少人及格就行了。所以可以先对最大值排序,然后从后往前走,枚举到i,看看1-i之间有多少最大值满足及格分,然后i+1到n中有多少最小值满足及格分这里用树状数组就行。不过值得注意的是枚举到i的最大值,如果小于后面出现的最小值,那么这个最大值就不能是最大值原创 2022-05-08 16:54:37 · 274 阅读 · 0 评论 -
2022蓝桥杯省赛A组-选数异或-(思维转化+线段树)
D题意:就是给你一个数组,和一个数x,再给你m次查询,每次问你[l,r]中是否有两个数的异或等于x。思考:刚看到两个数异或等于x也就是对于va[i]找出va[i] xor x。然后就是找是否这个是否出现过呗,多次l到r查询,莫队去vis标记。然后发现va[i]也是变的,所以想歪了。然后想了想就是对于每个点往右边找第一个va[i]^x,看看这个位置是否<=r,但是一想要对l到r中的每个数查询一遍啊,这不就是直接超时了。实际上不用那么麻烦,因为把每个点的右边最近的处理出来之后,直接query(l,原创 2022-05-06 13:57:10 · 984 阅读 · 0 评论 -
2021哈尔滨-Colorful Tree-(启发式合并)
C题意:就是给你一个树,所有叶子节点有一个颜色,每次你可以选择一个点进行操作,操作后会使得以这个节点代表的子树中所有的叶子节点的颜色被染成某种色。问你最少多少次操作,可以使得叶子节点满足题目给的颜色。思考:当时写的时候也没想太多,看到subtree就感觉是树上启发式,但是我没想到怎么去做。其实就是贪心的去想,对于某个节点,如果这个节点的所有叶子节点最大颜色出现的次数为多少,那么他的dp,就是在这个点颜色最多能节省多少次操作。现在就是怎么去求每个节点的子树所有颜色出现的次数,直接暴力?肯定超时或者炸空原创 2022-04-25 13:00:05 · 838 阅读 · 1 评论 -
2021吉林省赛-Nim Game-(线段树+线性基)
I题意:就是给你n堆石子,然后有两种操作一种是让一段区间的值加x,一种是在l到r这些堆石子中Bob去选择一些堆,然后Alice先手,问你Bob是否可以选择一些堆使得自己必胜。思考:昨天模拟比的时候,看到这个就是基础的nim博弈,bob想赢就从l到r中取一些使得这些数的xor和为0,想了想这不就是线性基吗,但是自己当时确实整理了一次线性基,但是没深入去了解总以为自己用不上。实际上线性基就是有个性质嘛,如果add不进去就代表产生0了,而且最多也就是看64或者32位。超过64或者32个数肯定会产生0。所以原创 2022-04-20 11:44:44 · 297 阅读 · 0 评论 -
2020威海-Caesar Cipher-(线段树+hash修改)
G题意:就是给你一个数组,然后有两种操作,第一个就是让一段区间加1,然后如果这个数>65535了就变成0,然后第二个就是查询两端区间序列是否相同。思考:很明显的线段树,然后对数组维护一个hash,对了取模的话自己定义一个取模,不要用ull,因为出题人想卡你就卡你。现在难点就是维护hash的同时如何操作一段区间加1?其实发现∑ a[i] * base ^ i,现在每个a都加1,那么变化值就是∑ base ^ i,所以维护一个pre对bas进行前缀和就行了。然后还有一个点就是对于如果这个数>原创 2022-04-14 16:23:50 · 234 阅读 · 0 评论 -
牛客练习赛90-妄想集合-(并查集维护路径+数论)
D题意:就是给你n个集合,有两种操作,一种是让l到r的集合都加入x。一种是擦查询l到r内的集合内是否可以选择3个数组成三角形。思考:首先看一下不能组成三角形的集合就是1 1 2 3 5 8,也就是斐波那契数列,当到46个的时候值已经很大了,所以如果这一段区间内的总数>=46了就肯定能组成三角形了。所以查询很好办了,那么就是插入了,如果每次枚举l到r那么是nn的复杂度太高,所以每个点的acc代表数的个数还不够46的下一个集合到底是谁。所以最多也只会枚举46n次。那么维护的话就可以用并查集维护路径原创 2022-03-30 17:26:23 · 210 阅读 · 0 评论 -
牛客练习赛91-监狱逃亡-(思维+类比逆序对+树状数组)
D题意:就是给你三层的地图,3行n列,现在你在1,1处,每次可以往右走一次和往下走一次,问你走到3,n的时候权值>=0的不同方法一共有多少种,同时取模。思考:昨天看了看,我以为还是以前做过的那个直接枚举状态的题呢,但是这个状态1e9…。但是发现只有三行,而且还要走到n,m很明显,推一下式子就行了。没两次下降的位置i,j。那么就是sum1[i]+sum2[j]-sum2[i-1]+sum3[n]-sum3[j-1]>=0;发现这怎么办呢,i和j是不同的。所以分开看一下,转化成sum2[j]原创 2022-03-30 17:13:39 · 194 阅读 · 0 评论 -
牛客练习赛91-魔法学院-(区间最大最小值更新+线段树)
C题意:就是给一个数组,然后有m个魔法,每个魔法可以让a,b的里面的值变为c,问你整个数组最大能是多少。思考:一看就是我以前做过的那道题希望,第一次知道怎么区间修改最大最小值,其实线段树本来就可以。那个题用的是muiltiset来维护的,这个题也可以,当然也可以用优先队列,本质是一样的,贪心拿最大的,如果当前不能用了就仍了。但是复杂度不确定,所以线段树是最保险的。代码:set:int T,n,m,k;int va[N];char s[N];vector<int > v[N原创 2022-03-29 21:13:08 · 457 阅读 · 0 评论 -
牛客练习赛96-小y的序列-(线段树+双指针)
C题意:就是给你一个数组,问你有多少区间l,r,l到r的最大值减去最小值等于k。思考:刚开始直接对于每个点套了二分加线段树,后来发现题目好像读错了。实际上是维护两个右指针,第一个满足的时候退出来,看看第二个指针。r2-r1就是当前区间的答案。当然对于最大值和最小值的维护也可以用multiset维护。代码:线段树:struct Node{ int L,R; int maxn; int minn;}t[4*N];int T,n,m,k;int va[N];int vb[N];原创 2022-03-26 16:17:35 · 281 阅读 · 0 评论 -
洛谷-小清新人渣的本愿-(莫队+bitset)
小清新人渣的本愿题意:就是给你一个数组,然后有3种查询,分别是问你l到r区间内,是否有两个数的差等于x,只和等于x,乘积为x。思考:其实看到,感觉就挺复杂的,没办法去找这种关系对,除了乘积为x可以直接枚举x的因子,然后看看两个数是否都在当前的区间内。然后对于差于和的,可以维护一个bitset。bitset可以看作一个从左到右递增的数组,每个地方就是某个值,然后如果当前的数i有值的话就是1,否则就是0。如果对bitset<<,也就是扩大的意思,那么里面的元素都会往右走,因为变大了,并且里面原创 2022-03-22 18:11:51 · 352 阅读 · 0 评论 -
洛谷-美好的一天-(莫队+异或性质)
美好的一天题意:就是给你一个字符串和m查询,每次问你一段区间l到r中有多少个子区间的字符按一定顺序排列后是否可以组成一个回文串。思考:看到组成回文串,就和之前过的一样就是,出现次数为奇数的字母最多只有一个。可以直接维护26个字母出现的次数当然也可以维护一个26位的二进制,如果这一位是1那么就是这个字幕出现的次数位奇数。如果只是查询一段区间就好了,直接维护每个单词出现的次数,cnt全局变量维护就行了,当然也可以维护一个26位的全局变量也行。但是这里是每次查询一个区间的所有子区间的合法个数,其实仔细思考原创 2022-03-21 17:00:13 · 147 阅读 · 0 评论 -
洛谷-数颜色-(带修改莫队)
数颜色题意:就是给你n个彩色的笔,然后有两种操作,一种是查询l到r中有多少个颜色,一种是把a位置的颜色换成b颜色。思考:这种修改和查询的想了想线段树,但是发现没啥维护信息。要么去分块?但是我的分块掌握的也不怎么好。然后去想莫队,但是这个带修改,其实带修改的莫队也就能做一下单调修改的。node存的时候多存一个时间线tim。也就是处理到这个查询的时候,比如我已经修改了x次了,如果当前的全局变量now还不到x,那么就要去更新,如果超过x了也要减回来。对于这个,如果修改的操作是我查询的区间内,那么就修改,否原创 2022-03-20 20:58:43 · 332 阅读 · 0 评论 -
2017西安-Arrangement for Contests-(线段树+空间理解)
Arrangement for Contests题意:就是给你一个n个不同难度的题目,然后每种难度的题目有va[i]个。然后出一套题目,必须连续m个,必须难度是累加1式的递增。现在问你一共能出多少套题目。思考:其实题目读懂之后就知道了就是从前往后走,选这m个区间的最小值就是个数,然后这段区间的值都减去这个最小值所以直接用线段树即可。不过值得注意的是这个是多组数据所以你需要对线段树进行清空,但是怎么清空是最快的呢,刚开始我总以为在build里面初始化好每一个节点不就行了,但是有可能上一个的node和这原创 2022-03-16 21:36:19 · 279 阅读 · 0 评论 -
洛谷-Tree and Queries-(树上启发式+树状数组)
DIV1-D题意:就是给你一个树,然后每个节点有一个颜色。给你m次询问,每次问你以a点的子树中,出现次数>=k的颜色有多少种。思考:不管别的,先考虑一下,怎么快速查询>=k的颜色有多少种。这是以前我遇到过的问题,一个数组,每次可以让一个点加1,一个点减1,最后问你整个数组元素>0的个数。其实,可以这样做,不直接去维护。而是先用一个数组,看看这个颜色出现了多少次,树状数组维护这个次数就行了。但是,对于刚才提的问题,如果出现负值就不行了,因为不能维护负值。然后呢,对于comb也就是合并原创 2022-03-13 12:10:07 · 292 阅读 · 4 评论 -
ABC-Range Pairing Query-(莫队)
G题意:给你n个人,每个人穿着有颜色的衣服,现在给你m次查询,每次查询一个区间,这个区间有多少对人的衣服颜色是相同的。思考:昨天做题没看,今天一看就是莫队裸题,而且时间限制还5秒,衣服的颜色相同就是某种颜色的人数/2就是匹配的对数。代码:struct Node{ int l,r; int id;}node[N];int T,n,m,k;int va[N];int pos[N],cnt[N],siz;int anw[N],ans;bool cmp(Node A,Node B){原创 2022-03-06 09:55:54 · 136 阅读 · 0 评论 -
牛客月赛9-换个角度思考-(树状数组+离线操作+莫队)
E题意:给你一个n数组,然后每次查询一个区间,问你这个区间里面<x的数有多少个。思考:刚开始一看,感觉直接做不好做,应该就是莫队维护一下区间,然后树状数组插入删除就行了,但是出题人卡了莫队所以超时了。然后发现,其实不要那么麻烦,只要我对所有的l和r排序后,再一次一次查询就好了。对于树状数组呢,能维护一段区间问题,只能维护前缀和后缀问题,并且只能维护一维东西,要么你是下标来的,要么是数字的权值来的。值得注意的呢是,莫队去掉ll之后,得了40分,所以对于ll还是挺卡时间和空间的。代码:树状原创 2022-03-05 17:46:57 · 110 阅读 · 0 评论 -
牛客月赛9-树上求和-(dfs序+线段树)
D题意:就是给你一个以1为跟节点的树,m次操作,一种操作是让x所在的子树所有节点的权值都加上y,另一种是查询x所在子树所有节点的权值平方和。同时对23333取模。思考:一看是树上操作区间就知道是dfs序了,然后权值的平方和考过很多次了,就是手推一下公式就看出来了。(a+c)(a+c)+(b+c)(b+c)==aa+bb+2*(a+b)+2cc。所以还要维护一下区间和就行了。值得注意的呢是,如何把树的区间转化为线段树的区间,其实只要按每个节点的左边进行记录记录编号就行了。好比线段树的第一个区间是1到n原创 2022-03-05 10:47:47 · 226 阅读 · 0 评论 -
牛课月赛9-红球进黑洞-(多个线段树+异或)
C题意:就是给你两个操作,一种是查询l到r的和,一种是让l到r都异或X。思考:就是建立20线段树,看看每一位有多少个1就行了。同时类似的题目有区间或:RMQ还有区间与:And RMQ代码:区间异或代码:int T,n,m,k;int va[N];int cnt[N];struct Node{ int L,R; int laz; int sum;};struct segtree{ int now; Node t[4*N]; void pushdown(int n原创 2022-03-04 18:27:10 · 121 阅读 · 0 评论