数据结构
qq_2456160268
这个作者很懒,什么都没留下…
展开
-
Controversial Rounds
传送门题意:给你一个长度为你的由0,1,?构成的字符串,你可以选择将?改成0或1,问你构成连续i个的0或1,问你最大能构成多少个,i取1到n。题解:首先对于每一位置维护出从当前位置往后最多能有多少个连续的0或者1,这一步分可以从前往后dp转移。考虑最暴力的做法,对于每一个i从往后长度大于i的里面选一个大于当前位置的最小id出来,如果能找到ans++,更新当前位置,否则跳出,复杂度n^2,然后考虑优化,后面寻找的过程可以用线段树来进行优化,对于后面查满足条件的最小id在线段树中实际就是大于等于当前区间原创 2020-08-17 21:43:44 · 214 阅读 · 0 评论 -
2020牛客多校第五场H
题意:给你n个数,每次询问一个区间,问询问区间的子区间数取&去重后一个有多少个,强制在线题解:首先由与是&操作,那么对于第i个位置,不管是往左还是往右取&都是一个不增区间,具有单调性了,那么我们其实是可以通过二分来求得对于第i个位置,它往一个方向取&后会在哪些地方改变,如果可以离线那么这道题就可以和REQ这道题类似的做法,但是本题强制在线,而且询问是区间询问可以考虑用主席树来进行维护,大体思路与REQ类似,对于每一个取&后的数,如果是第一次出现那就在对应时间戳的对原创 2020-07-31 11:03:23 · 213 阅读 · 0 评论 -
2020牛客多校第二场G
https://ac.nowcoder.com/acm/contest/5667/G题意:给你两个序列,问你从第一个序列中有多少个与第二个序列长度相同的并且对应位置都是大于等于第二个序列的子串。题解: 神仙bitset题,维护第二个序列的bitset,例如样例中的 2 3 3,按照大小排序后维护的m个bitset为:0100,0110,0111,,样例中的数据维护的bitset不是很好理解,在举一个例子比如:2 4 5 3 6,按照大小排序后的m个bitset为:010000,010010,0110原创 2020-07-29 21:38:30 · 136 阅读 · 0 评论 -
F. Strange Function(Educational Codeforces Round 85 (Rated for Div. 2))
传送门题意:给两个数组ai和bi,删除ai中元素需要花费pi的代价,bi是一个严格递增序列,问你将ai删为bi的最小1花费代价。题解:开一个dp数组代表bi匹配到当前位的最小代价,由于bi是一个严格递增序列,所以ai对应唯一一个bi的匹配位置,所以用dp降为一维,dp[k]由dp[k-1]推出,即删除大于bi[k-1]的数,同时由于要求最小代价所以还应将小于等于bi[k-1]的负数也删除,...原创 2020-04-19 22:49:27 · 250 阅读 · 0 评论 -
codeforces 1285E Delete a Segment(线段树)
传送门题意:给你n个线段,线段有交点被看做同一线段,问你删除一条线段后形成的新线段的数量最大为多少?题解:题解是用扫描线写的,看不懂,提供一个线段树的做法,不过常数有点大。首先由于端点范围需要将端点离散化,同时由于线段可以是一个点,所以需要在相邻俩点拆一个点作为边,那么将所有线段加入后,你如果选择将一条线段删除,那么这条线段造成的影响就是它覆盖的区间中只被它有条线段覆盖的段数合,因为只有当...原创 2020-01-12 09:35:13 · 272 阅读 · 0 评论 -
Russian Dolls on the Christmas Tree(主席树)
传送门题意:给你一颗树,每个节点都有一个标号,问你将一个节点所有子节点及其本身的标号连接能形成几段。题解:大多是用线段树合并写的,所以补一发主席树的做法。将树用dfs序hash下来后,对于每一个节点,我们可以得知如果当前节点的前继在当前掌控的范围那么段数会减少一,即当前节点可以和子树中的节点合并为一段,那么问题就转化为对于当前节点掌控的子树,子节点中有多少节点的前驱在掌控范围中,这个就是主...原创 2020-07-29 21:05:36 · 491 阅读 · 0 评论 -
New Year and Conference(线段树)
传送门题意:给你n组有俩个区间段A和B的数据,问你是否A相交时B也相交或者都不相交。题解:将端点离散化后按A左端点排序,另开一个数组按A右端点排序,按左端点将A加入,通过第二个结构体将A删除,同时对应增加或删除B区间,那么当前留下的A区间都是相交的,同时用线段树维护被B区间最多的覆盖次数,那么每次删除时,留下的A区间数等于B的最大覆盖数,然后反转AB区间在处理一次就可以得到答案,复杂度O(...原创 2020-01-09 10:14:11 · 169 阅读 · 0 评论 -
CF19D Points(线段树)
传送门题意:有n次操作,每次操作分3种:1 add x y操作,向坐标系的第一象限(包括坐标轴)添加一个点,点的坐标不超过1e9,而且相同的点不会重复添加,2remove x y操作,删掉(x,y)这个点,3find x y操作,找到点(x,y)右上方,x最小的点,如果出现多个选择y最小的点,题解:一种线段树加一丢丢优化的做法,先读入所有操作,先对坐标进行处理,将x乘以1e9,排序离散...原创 2019-09-19 11:20:49 · 345 阅读 · 0 评论 -
Longest Subarray(hdu-6602)
传送门题意:给你一个长度为n的序列,序列中元素的值不会超过c,问你满足区间中的每个数都出现至少了K次的最长区间的长度题解:一个玄学复杂度的做法,开一个vector记录每种权值的位置,枚举右端点,如果右端点满足条件,就可以初步确定一个区间,在判断在这个区间里面的数需要满足出现k次的最小位置k1,如果k1存在且小于l,就递归处理[k1,l],如果大于等于就直接计算长度,那么就可以求出以当前端点...原创 2019-08-28 20:32:28 · 175 阅读 · 0 评论 -
堵塞的交通traffic(线段树神题)
传送门题意:有一个2*n的方格,每个方格会与周围的格子连接,最开始路是断开的,给你3种操作,输出询问操作的格子是否连通;题解:线段数神题,也是李超ppt中的例题之一,用线段树维护当前2*len长度的方格的联通性,将方格4个角的联通性与中间格子的联通性记录下来,当前区间的联通性可以由子区间得到,例如:要得到当前区间左上和右下的连通性,可以先看左区间的连通性,在通过中间的方格中转在考录右区间的...原创 2019-08-15 20:59:35 · 813 阅读 · 0 评论 -
P2839 [国家集训队]middle(主席树)
传送门题意:给你一个数组,每次询问给你两个区间,问你从两个区间中各自确定一个端点形成一个区间,所有的区间中排序后中位数最大是多少,强制在线题解:对于一个数如果可能是当前区间的中点,那么区间中比它小的数的数量必定小于区间长度的一半,如果将区间中小于当前的数赋值为-1,大于等于的数赋值为1,则可以转变为区间的值是大于等于0的,由于要求求最大,可以直接二分答案,将求值问题转变为判定性问题,则如果...原创 2019-08-20 16:21:34 · 151 阅读 · 0 评论 -
P4121 [WC2005]双面棋盘(线段树+并查集)
传送门题意:给你一个棋盘,棋盘格子有颜色,每次都会单点修改,问你修改后的白色和黑色联通块的数量。题解:并查集是可以用来求联通块数量的,如果没有修改就是一个简单的带权并查集,但是由于有修改并且在棋盘上,所以如果只是并查集是不足以完成的,然后注意题目限制1≤n≤200,而且每次只是单点修改,修改直接影响的只有当前列(将棋盘按列分割开)对于其他列是没有影响的,然后就只会在相邻行合并时产生影...原创 2019-08-20 15:55:14 · 202 阅读 · 0 评论 -
Prediction(并查集+思维)
传送门题意:给你一棵树和一张图,树上的节点代表了图上的一条边,每次给你一个树上的集合,你需要将集合中的点以及在树上点的所有父亲节点代表的边在图中连接,给出图中联通块个数;题解:如果只有一次询问,那可以直接对树跑dfs同时维护一个并查集,最后输出联通块数量,就是并查集的基础操作,但是由于是q次查询,所以按照一次查询来做,时间就会原地爆炸,但是思路还是不变,联通块用并查集维护,那我每次查询的时...原创 2019-04-24 12:27:46 · 357 阅读 · 0 评论 -
P4768 [NOI2018]归程(可持久化并查集+最短路)
传送门题意:给你一张图,图中有m条边,每条边有长度和一个海拔值,给你q次询问,每次给你一个节点v和一个海拔值p,问你从v到1的最短距离是多少,对于图中的边如果海拔值大于p,那边的长度在这次查询时就会变为0;题解:首先对于海拔大于o,那边连接的点就相当于一个点,那对于一个联通块来说,联通块中的所有点到1的最短距离就是就是最短距离对应的那个点,所以我们需要维护一个并查集,然后考虑对于每次海拔的...原创 2019-04-24 13:39:10 · 180 阅读 · 0 评论 -
落谷 P4833 萨塔尼亚的一生之敌(思维+图论+并查集)
传送门题意:给你n个点,m条边,让你将n个点分成尽量多的集合,不在同一集合的点俩俩之间要有边存在,问你最多能分成多少个集合,每个集合有多少个节点题解:最开始任选一个节点v,所有没有与v有边相连的点都应与v属于同一集合,记录数量,维护联通块,然后从不属于已经出现的联通块中任选一个节点,与最开始一样的操作,但是由于已经有联通块出现了,所以如果必须与当前点在同一集合中点已经属于其他联通块了,那么...原创 2019-04-25 15:11:24 · 181 阅读 · 0 评论 -
P2048 [NOI2010]超级钢琴(主席树+前缀合)
传送门题目:小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐。这架超级钢琴可以弹奏出n个音符,编号为1至n。第i个音符的美妙度为Ai,其中Ai可正可负。一个“超级和弦”由若干个编号连续的音符组成,包含的音符个数不少于L且不多于R。我们定义超级和弦的美妙度为其包含的所有音符的美妙度之和。两个超级和弦被认为是相同的,当且仅当这...原创 2019-05-22 20:51:31 · 187 阅读 · 0 评论 -
P3527 [POI2011]MET-Meteors(整体二分+树状数组)
传送门题意:给定一个环,每个节点有一个所属国家,k次事件,每次对[l,r]区间上的每个点点权加上一个值,求每个国家最早多少次操作之后所有点的点权和能达到一个值题解:题目要求找到最小的事件使权值达到一个值,如果是只有一个国家,那很容易就能想到二分答案,判断枚举的数的合法性,在继续二分下去,找到最小值,但是对于多个国家复杂度就会多一个n——————TLE; 最开始想的时候还是想的二...原创 2019-05-23 19:36:26 · 153 阅读 · 0 评论 -
P3293 [SCOI2016]美味(主席树+最大异或合)
传送门题意:给你n个数,每次给你一个l到r区间,还有一个bi和xi,每次输出l到r中使得bi XOR (aj+xi)值最大,输出最大值题解:首先是最大异或合,最大异或合的求法是基于贪心的思想,来源于:10000XOR00000>10000XOR11111,所以对于我们要找的最大值,我们将所有的数拆成二进制,从高位开始选取,如果有使当前位异或为1的值就直接选取,由于只是贪心了当前位所以...原创 2019-06-03 14:53:05 · 158 阅读 · 0 评论 -
P5283 [十二省联考2019]异或粽子(主席树+最大异或和)
传送门题意:从所有区间长度大于l小于r的区间段中,选择最大的k个区间异或合相加,输出答案这道题与P2048 [NOI2010]超级钢琴的思想相似,如果没有做过可以先去尝试一下超级钢琴。P2048 [NOI2010]超级钢琴:传送门题解:由于异或一个相同的数,异或值为0所以对于前缀和来说,sum[r]XORsum[l-1]其实就是r到(l-1)的异或合,所以对于求的第几大值我们可...原创 2019-06-03 15:02:44 · 226 阅读 · 0 评论 -
Aninteresting game HDU - 5975
传送门题意:给你一个n和q,代表区间长度和操作次数,操作有两种:1 l r 查询[l,r]的[i-lowbit(i)+1,i]的合(l<=i<=r), 2 l 查询有好多个数满足i-lowbit(i)+1<=l<=i-1(i<=n);题解:1.对于第一种操作,如果不考虑n的范围就是一个nlogn的傻逼题,但是n的范围是[1,1e18],所以基本是O(1)或...原创 2019-08-14 10:20:14 · 112 阅读 · 0 评论 -
bzoj 3674(可持久化并查集)
传送门题解:一道可持久化并查集的裸题,板子子对了就能过;可持久化并查集是基于主席数的一种结构,可持久化并查集要求能够访问历史版本,跟主席树很像,所以可以通过主席树维护普通并查集的fa数组,但是由于用主席树维护后没有办法用路径压缩,所以需要采用新的合并方式——启发式合并,对每一个节点增加一个level,每次合并从小的指向大的,如果合并的两个节点的level相等,则合并后的节点的level需要...原创 2019-04-17 22:00:20 · 189 阅读 · 0 评论