数据结构总结
P4198 楼房重建
非常好题目,首先你显然能够得到一个楼房看得见的条件:当斜率严格大于之前的所有斜率时,这栋楼房可以被看见。
接着我们考虑线段树
P7470 岛屿探险
首先看到下面给的部分分,就提示你分类讨论:一种是
1.
这种你会发现这个只跟
具体地,就是对于当前
2.
这种乍眼一看好像不好解决,但你发现这个跟第一种是同构的,只需将所有需要考虑的
现在我们知道了如何解决这两种操作,但如何在有限时间内求出所有答案?我们考虑线段树分治,将每个查询
但是,
复杂度:
P6018 Fusion tree
思路很简单,只需要把父亲和儿子分开考虑就行,维护儿子需要全局加
inline void modify(int u){ swap(trie[u][0],trie[u][1]); if(trie[u][0]) modify(trie[u][0]); push_up(u); }
P4768 归程
题目可以转化为当前能走到的点中与
而当且能走的边为
int now=n; for(int i=1;i<=m;i++){ int x=getfa(e[i].u),y=getfa(e[i].v); if(x==y) continue; now++; a[now]=e[i].w; ed[now].push_back(x),ed[now].push_back(y); fa[x]=fa[y]=now; }
最后倍增查找即可。
P3402 可持久化并查集
重点在将
和可持久化线段树相同,每个版本保留未更改的部分压缩空间。
P8253 如何正确地排序
首先对于
设另外两行为
则可以得到:
或
这就是一个二维偏序,就可以做了。
那么对于
P5163 WD与地图
首先考虑将删边变为加边。
接着发现可以二分一条边能把两个强连通块合并的时间,于是整体二分做就行了。
P5609 对数据结构的爱
挺有思维难度的一道题,你发现题意就是未经过“取模”的和减去有“取模”位置的个数再乘以
首先发现可以维护在
显然,
然后我们对于左区间有
然后就有一个性质:
证明:
证毕。
然后就可以在
P5280 线段树
首先你肯定会想到维护当前这个点值为
然后你会发现若一个区间能被赋为
所以维护两个数组
设
那么对于第一种,就有转移:
第二种转移:
第三种转移:
第四种转移:
第五种转移:
然后线段树上维护就行了。
根号数据结构
莫队+离线维护更改值
非常好理解的东西,比如说查询区间逆序对个数,在莫队的时候加一个点或删一个点显然是无法做到
例题也不多,就列三个出来,感觉都挺板的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】