做题记录(Oct.)

9 月链接

2025.10.4

P12360

不会描述题面自己回去看吧。

首先我们发现答案具有单调性,所以我们二分答案。

\(b\) 队以最佳策略安排不确定的人,然后让 \(a\) 队以最佳策略(田忌赛马)去尽可能得分。自己略想一想不难证。


P3500

\(m\) 个长为 \(k_i\) 的子串 \(b\) 分别是不是长为 \(n\) 的母串 \(a\) 的子序列。

\(1\le n,m,a_i,b_i\le 10^6,\sum k_i\le10^6\)

做法有两种,一种是用 vector 记录当前要找的值为 \(i\) 的所有 \(b\),然后遍历 \(a\),途中每个 \(a_i\) 更新一下 \(v_{a_i}\),让这些 \(b\) 跳到下一位或统计答案。

第二种是用 vector 记录每种数出现在哪些位置,二分去找下一个数的位置。

2025.10.6

P13744

先用单调栈找会往哪一层流,使用并查集建边记录,流满的就压缩路径。

2025.10.12

P10950

见欧拉回路题解。

2025.10.14

P9128

好久没写紫题了。顺便写篇题解

2025.10.27

AT_utpc2011_7

又水了篇紫题题解(喜)。

2025.10.28

P11340

交晚了题解满了(悲)。

2025.10.31

  • 其实是 CSP 后补的,考炸了,悲。

P3805

Manacher 板子,现在才学。

代码大致思路:令 \(f_i\) 为以 \(i\) 为中心的回文串长度除以二。

枚举字符串的每一位 \(i\),此时已记录以 \(1\sim i-1\) 为中心的回文串中右端点最靠右的。若 \(i\) 不在这个区间内,将这个区间的中心设为 \(i\),暴力扩展已 \(i\) 为中心的最长回文串。否则,在这个回文串中和 \(i\) 位置关于区间中点对称的 \(j\) 的回文串长度可以继承给 \(i\)(不能超过区间范围),然后继续暴力扩展。这个被记录的区间只会移动 \(n\) 次。

为了方便(让所有回文串长度为奇数),在每两个字符间加上一个特殊符号,常用 #


P7771

欧拉回路板子,注意一下 hack(各种无解情况)。


P5431

我真蠢的没边了,这都不会。

先求出 \(\Pi_{i=1}^n a_i\) 的逆元,然后对 \(a\) 前缀积后缀积一下,就可以 \(\text{O}(1)\) 求每个 \(a_i\) 的逆元。然后乱搞。

11 月链接

posted @ 2025-10-05 09:05  wo2011  阅读(7)  评论(0)    收藏  举报
//雪花飘落效果