做题记录(Sept.)

8 月链接
9 月:

  • 上文化课了。
  • 备考 CSP。

2025.9.1

  • 做真题。

P1099 & P2491

给定一棵 \(n\) 个点的树,求其中一条长度不超过 \(s\) 的路径,使得离这条路径最远的节点到路径的距离最短。

\(1\le n\le 5\times 10^5\)

结论:

  1. 这条路径在直径上,这一点在 P1099 中直接给出。
  2. 每条直径答案相同。

考虑找到直径后,对每个点向非直径上的点扩展,求出最远有多远,双指针求路径的同时滑动窗口求最大值,两端的贡献则是到直径端点的距离。


P1155

给定两个栈,求能否对一个 \(1\)\(n\) 的排列通过在两个栈中按顺序进栈出栈实现排序,第一个栈进出的操作用 a b表示,第二个栈用 c d 表示。若可以实现,输出字典序最小的方案。

\(n\le 10^3\)

考虑什么情况下某些数不能出现在一个栈里。

结论:若 \(i<j<k\)\(a_k<a_i<a_j\),他们不能在一个栈里被排序。

考虑 \(n^2\) 预处理哪些 \(i\)\(j\) 会受限,连一条边,二分图染色,若会冲突则无解,否则可以。

模拟方案序列,微调输出。见代码,不会描述了。

2025.9.5

  • 做真题。

P9753

一种操作,删除两个相邻且相同的字符。求字符串 \(s\) 有多少个非空字串可以通过若干次这种操作变为空串。

\(1\le |s|\le 2\times 10^6\)

时隔两年杀掉这道题,当初怎么就听不懂老师讲的呢……

性质:用栈记录 \(\left[1,i\right]\) 的子串删完后是什么样子,当有 \(1\le i<j\le n\) 满足两者栈中内容相同时,\(\left[i+1, j\right]\) 满足要求。

知道这个性质后,也很好想怎么证。考虑如何统计相同,可以用 \(trie\) 树,实时记录在树上哪个位置,记录每个位置被走打多少次即可。

2025.9.8

  • whk 作业效率太低了,只能口胡一下 ABC。

AT_abc422_d

感觉出差最大是 \(1\),乱搞构造。


AT_abc422_e

随机两个点求直线乱搞。

2025.9.11

  • 做原题。

P5021

一颗 \(n\) 个点的树,从上面找 \(m\) 条没有共边的路径,使得最短的路径的长度取到最大值,求最大值。

\(2\le n\le 5\times 10^4,1\le m\le n - 1\)

先二分答案。

贪心,对于每个点,看他的子树中到它的链的长度,从小到大依次看这条链能否与其他链拼出一条满足要求的链,如果可以,选择其中最短的一条匹配,这样是最优的。最后从没有匹配的链中选出最长的一条向上,为其父亲贡献。

10 月链接

posted @ 2025-09-01 19:42  wo2011  阅读(6)  评论(0)    收藏  举报
//雪花飘落效果