随笔分类 - 数据结构
摘要:136G-指纹锁 题意: 设计一个容器,支持插入x,若与容器中的值最小相差为k,则自动忽略。删除操作,把与x相差为k的值都从容器中删除。查询操作,问容器中有没有和x相差为k的数值。 思路: 一个stl中的set 加上cmp结构体重载就搞定了。神奇。 #include <iostream> #incl
阅读全文
摘要:题意:问许多单词中,前缀是某个字符串的个数有多少个; 思路: 用字典树建立,每个节点带上num,记录每次insert是,经过这个点的次数, 每次询问,找到这个前缀对应的节点的num就ok 这道题,c++过,g++不行 ac代码:
阅读全文
摘要:题意: 一个长度为n的数组,4种操作 : (1)C l r d:区间[l,r]中的数都加1,同时当前的时间戳加1 。 (2)Q l r:查询当前时间戳区间[l,r]中所有数的和 。 (3)H l r t:查询时间戳t区间[l,r]的和 。 (4)B t:将当前时间戳置为t 。 (第一次修改t为1;
阅读全文
摘要:参考: https://blog.csdn.net/qiqi_skystar/article/details/49073309 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2795这个是对宽度建立线段树,每次更新这一行,一个区间的最大剩余宽度; 题目大
阅读全文
摘要:传送门:https://www.luogu.org/problemnew/show/P2801 参考:http://hzwer.com/2784.html 感觉思路无比清晰;) ps:我在洛谷A的,BZOJ要权限; 题意:区间查询有多少个比K的数; 思路:分块,两边暴力更新与查询,中间查询是用二分计
阅读全文
摘要:参考:https://www.cnblogs.com/liyinggang/p/5965981.html 题意:是一个数据结构题,树上的,用dfs序,变成线性的; 思路:对于每一个节点x,记录其DFS序,包括第一次到的序号,用in【x】记录,离开的序号out【x】记录, 再开一个数组seg,in:(
阅读全文
摘要:传送门Can you answer these queries? 题意: 线段树,只是区间修改变成 把每个点的值开根号; 思路: 对$[X,Y]$的值开根号,由于最大为 $2^{63}$.可以观察到最多开根号7次即为1,则当根号次数大于等于7时,这段区间值为$R-L+1$,还有一点是L可能大于R。
阅读全文
摘要:情人节的电灯泡 这是一道二维树状数组的引用,和之前的一道有一点差别; 主要注意这里的查询操作; getsum(x,y)+getsum(a-1,b-1)-getsum(x,b-1)-getsum(a-1,y)
阅读全文
摘要:传送门:CodeForces - 940E - Cashback 题意: 在一个长度为n的数组中,可以分出长度为 k 连续的多个数组b(每个数组 b 的 k 可不相同),然后,可以对每个数组 b 进行删去 k / c 个数的操作; 输出最小的全部数组b的和; 思路: 首先要贪心的想到,这个 k 要么
阅读全文
摘要:求逆序对有三种以上方法:1、离散树状数组,2、线段树,3、归并排序 今天做了下洛谷的P1908逆序对; 1、一开始用树状数组,一直RE,后来在发现自己一直忽略离散化。
阅读全文
摘要:Code For 1 题意: 对于一个n,可以将它分解为n/2,n%2,n/2三个数字,重复上述操作知道虽有值为1或0为止; 求L R区间数列的和; 思路: 首先画着画着可以发现这是一个类似线段数的结构,其长度len在每次n/2时,$len=len*2+1$; 有了长度和n就可以dfs查询区间的和了
阅读全文
摘要:题目: 一个只有0和1构成的二维平面,给你两种指令,一种是区间的更新,即0变为1,1变为0;一种是查询一个点是1还是0; 由于是二进制,所以每次更新在相应的点上加一,最后对2取余即可。 至于二维的树状数组的应用原理,我也是看了这篇论文才明白; 国家队论文集/2009/武森《浅谈信息学竞赛中的“0”和
阅读全文

浙公网安备 33010602011771号