2026 刷题记录

February

2.9

来就先切了道 CF985F,注意在第 16 个点会 WA,因为你代码的哈希如果没有取模会造成冲突,可以考虑取模来解决。

接着是 P3065,不难想到把值都扔上 Trie 树,但你会发现贪心是错的,你没法确定字典序。

如:

2
acc
acb

由此发现贪心是错的。

因为会存在优先级的顺序,所以我们可以根据钦定的字符串的每一位置来建图。

具体的,假如说我要求 \(m\)\(a\) 小,那后面如果出现了一个字符比 \(a\) 大,比 \(m\) 小,那就不合法。

在图上就是形成了环,由此,跑拓扑序即可。

2.10

早上过来先把昨天没做的 P3065 给写了,然后就是听讲。

下午先写了 CF1167F,事实上,你打出暴力后会发现这只和两个点之间的大小关系以及两点之间所在位置的顺序有关,可以考虑把他扔到树状数组上维护即可。

2.11

昨晚讲课,没时间写题,先花了一小时把 CF1228E 给写了。

你会发现,我们定义两个数组 f 和 \(g\) 分别表示至少有 \(i\)\(j\) 列不满足要求以及恰好有 \(i\)\(j\) 列不满足要求。

用二项式反演容斥即可。

下午打了场新春欢乐赛,和 PLH 拿下 rk 7 成为二等奖守门员。

2.25

返校第一天,配置环境配置了一个小时。

挑战了一下 AT_abc405_g 发现复杂度带了只 \(\log\) 会 TLE 但我们可以考虑分块优化修改时的复杂度,这一点可以优化到 \(O(1)\),最终复杂度就去掉 \(\log\) 了。

2.26

早上把昨天晚上没打出来的的 CF2203E 写了,性质很好想,当已经确定了数字 A 后发现数字 B 的最优策略是在离 A 最近的两个点上,分别计算两点所得的分数,取最大值即是选择 B 的最优方案。

我们可以发现分数的图像存在单谷结构,可以考虑二分或三分来处理,复杂度 \(O(n \log^2 n)\)

下午先来写图论专题。

先来写 P1948 有一种很巧妙的思路,可以二分答案然后计算是否存在一条路径满足处理后代价 \(\le mid\)

对于 check 函数,可以考虑将大小大于 \(mid\) 的边记为 1,剩下的记为 0,然后 01BFS 来跑一遍看最短路是否 \(\le k\) 即可。

posted @ 2026-02-26 15:41  Ptll  阅读(1)  评论(0)    收藏  举报