近年省选数据结构乱做
前言
这是一篇用来记录近几年省选数据结构的文章,大致记录一些题目的关键点,其中好的/有代表性的会加入分享课件(没办法,谁叫我突然心血来潮想讲数据结构呢?)
是靠luogu标签划分的,肯定会有遗漏,如果你想推荐一些没有列举出来的题,欢迎推荐给我!
目前进度\(10/31\)。
一、P4344 [SHOI2015]脑洞治疗仪
- 维护区间连续0的最长长度(较复杂的
pushup
) - 将区间前x个0改为1(普通线段树二分)
- 实现过程:查询时没有
pushdown
WA了一发。
二、P3703 [SDOI2017]树点涂色
- 感觉这题的重点不在数据结构,而在树上的处理。
- 操作是对\(x\)到根的路径染一种没有用过的颜色,查询每个点到根有多少不同的颜色。
- 可以直接重链上暴力将颜色段合并,因为每次操作最多会增加一个区间,均摊\(O(n)\)的
- 实现过程:没有想到一条链从重链中间连轻链等等细节,本地不知道调了多久
三、P3309 [SDOI2014]向量集
-
强制在线的情况下,询问关于第\(l\)到\(r\)个加入元素。
-
对加入元素建立线段树,因为一旦某个区间元素满了,即
si==r-l+1
就可以离线处理。(因为询问要包含一个区间必须先要这个区间都加入了) -
这里还需要维护凸包,所以还考了离线之后维护凸包。
-
实现时不记得二分在凸包上找最值的边界问题了。
int mi=0,ma=tr[p].size()-1,mid,ans=ma; while(mi<=ma){ mid=(mi+ma)>>1; //下凸包是>,上凸包是< //下取整的关系,找斜率要为mid和mid+1 if(getk(tr[p][o][mid],tr[p][o][mid+1])>k)ma=mid-1,ans=mid; else mi=mid+1; }
-
如果你看到样例
S=A
从而在判断在线时为S=='A'
你就会自闭半小时。
四、P4577 [FJOI2018]领导集团问题
- 挺不错的一道题,就是题面像shi一样。
- 需要维护前驱取max,线段树合并,单点查询,但是可以通过差分转化为前缀和查询,线段树二分修改。
- 实现过程:开始没有把关系理顺,想了一阵,后面把大致思路想到了,看了题解之后明白了这么做了原理。
五、P3747 [六省联考 2017] 相逢是问候
- 关于数学的线段树,做之前可以做一下P4139 上帝与集合的正确用法
- 关键是对\(a_i\)不断做\(a_i\leftarrow c^{a_i}\)之后会不变,所以可以暴力更新。
- 实现情况:自闭了,扩展欧拉定理太恶心了,你需要判断这个数是否大于mod!!!
六、P5226 [SCOI2015]小凸解密码
- 比较常规,求解的时候需要想清楚需要维护什么,不然就会浪费时间。
- 这里需要维护区间连续的非0的段数。
- 实现情况:最开始没有想清楚,后面因为本题的边界情况\(b_0=a_0\)细节没有调好。
七、P5283 [十二省联考 2019] 异或粽子
- 关于异或的题,发现自己SB了,为了满足后面只会选前面的特地建了可持久化,然而如果把\(k\times2\),就不需要管这个条件了...
- 实现的时候知道了,可持久化是不能通过记录父亲而向上访问的,因为一个节点可能会有多个父亲。
八、P4559 [JSOI2018]列队
- 主席树维护区间信息,线段树二分查找。
- 实现的时候没有注意到需要判断分界点是哪个,又WA了一发。
- 不要忘记\(\log 10^6\)不能只开20倍!!!!!!
九、P4216 [SCOI2015]情报传递
- 简单题,基本的二维偏序+树上操作。
- 貌似离线可以直接一个\(\log\),在线用主席树也可以两个\(\log\)
十、P4462 [CQOI2018]异或序列
- 普通莫队题,刚开始加这个题的时候一下子没看出来。
- 实现没有什么问题。