题目清单
前言
开坑,因为上课接受了太多的题目然后又没有时间去补,只好先把思路放在这里,有空在补,看到这条的记得催我去补题T_T
2024.10.4
洛谷P2296寻找道路(已完成)
建反边,然后记录所有终点能到达的点,然后因为每条边的长度均为一,因为边权为1,所以bfs然后判断这个点是否合法
洛谷P1967货车运输(已完成)
将边权从大到小排序,然后考虑加边,维护并查集,若是有询问两个点在两个并查集内并且合并了,就统计答案(最多进行log次两个set取交,删除,合并,每次启发式合并,小的往大的上进行查询是否存在若存在则删除,然后暴力加入,复杂度都是log,最后复杂度\(O(Nlog^2N)\))
思路二:
跑一遍最大生成树,然后倍增求最小的边权和lca
洛谷P4819杀人游戏(已完成)
缩点然后统计所有入度为0的点的个数,然后计算即可,注:若存在度数为0的并且强连通分量内点个数为1的点,则答案要统计个数要减去1,因为把所有好人都问完了最剩一个逮捕就好了
洛谷P4180严格次小生成树(已完成)
先找出最小生成树,然后枚举一条边倍增或树剖来求最短路径上边权最小的边
洛谷P5008锦鲤抄(已完成)
求出所有可以删去的点,然后选出前k大的
如何求?
先进行一个缩点,然后所有有入度的点都合法,考虑入度为0的强连通分量,可以留下一个点权最小的点,注:若此强连通分量中有自环则可以将其全部删去
poj3613
题意:需要找到一条从起点S到终点E的最短路径,并且恰好经过N条路径,求出最短路径长度
\((2 ≤ N ≤ 1,000,000)(2 ≤ T ≤ 100)\)
我们现设状态 \(dp[k][i][j]\) 表示i,j经过k条边的最短路
然后考虑floyd的合并过程,得出我们要的转移式子
看N很大,于是考虑用logn解决N,考虑多重背包的二进制拆分
根据这个转移即可,时间复杂度 \(O(T^3logN)\)
2024.10.5
洛谷P6011动态最值
题意:维护一个数组支持删除一个数(并且下标向左移),然后维护一段区间最小值
维护一棵线段树中区间最小值和有此位置上是否存在数,然后修改时将此位变为inf并将此数是否存在改为0,如要查询时前缀和+二分即可
UVA10587Mayor's posters
题意:有n个人在(l,r)贴海报,求最后能看见多少张不同的海报
维护一颗线段树,然后维护每一位上的颜色,先更新的颜色小后更新的大,然后最后在枚举所有点,查询每一个点的颜色,让颜色大的代替小的,最后统计答案即可
洛谷P1525关押罪犯(已完成)
扩展域并查集,将满足同一个逻辑关系的条件加在一个并查集内,直到第一个冲突为止(有图)