9月杂题乱做
一些比较有教育意义的题
难度由低到高分别为 \(1\) 到 \(10\)。
难度:\(5\)
首先考虑只出现两次怎么做,显然就是区间不能互相包含。然后是四次,手玩发现只有 \((1,3) \And (2,4)\) 和 \((1, 2) \And (3, 4)\) 两种,那么考虑 2-SAT,直接像对应区间连边,考虑主席树优化建图即可。
P7353 [2020-2021 集训队作业] Tom & Jerry
难度:\(6\)
考虑 Tom 需要如何走才能限制 Jerry:每次走到一个 Jerry 方向的割点,这样才能缩小 Jerry 的行走范围。考虑如何刻画,我们建出圆方树,直接对着这个限制 DP,然后换根即可。
P12077 [OOI 2025] Strong Connectivity Strikes Back
难度:\(6.5\)
你发现对一个图缩点之后的形态是 sub4,每个点内的形态是 sub6 你分别考虑这俩怎么做。
先考虑 sub4 如何做:转化成至少保留多少边使得任意两点的可达性不变,对于每个边 \(u \rightarrow v\),若不存在另一个边 \(w \rightarrow v\) 使得 \(u \rightsquigarrow w\),则保留 \(u \rightarrow v\)。
再考虑 sub6 如何做:发现当集合 \(E\) 中存在一个简单环或者是自环的时候 \(E\) 不合法,直接对着这个做就行。
难度:\(5\)
同样的 trick 有 P7115 [NOIP2020] 移球游戏 ,你先会 \(S = 2\) 的做法,答案要求每种元素在两列中出现的次数差 \(\leq 1\),考虑图论构造成欧拉路径,对于其中每个点都能满足出度与入度不超过 \(1\),你直接在每一行对两个数连边,最后给他定向。然后 \(S = 2 ^ k\) 你就先把所有数分成两种颜色,然后分开让他们的次数差小于 \(1\),再分治下去。
难度:\(?\)
这很诡异你知道吗?前 \(K\) 个跑 DP,后面的贪心。
难度:\(5\)
首先不考虑 \(1 \leq a_{i,j} \leq 1 \times 10^6\),可以 \(O(nm)\) 构造出一组解,考虑在这个基础上调整一下。考虑如何调整,我们可以给一行或者一列依次进行 \(+x,-x,+x,\dots\) 的操作,我们设 \(r_i\) 和 \(c_i\) 表示加在行、列上的数,然后能写出一些不等式,那肯定考虑差分约束。但是有形如 \(x+y\) 的形式我们显然无法差分约束,我们通过调整一些正负号如:对于所有偶数的 \(i\),将 \(ri\) 取相反数,对于所有奇数的 \(j\),将 \(cj\) 取相反数。然后差分约束构造方案即可。
难度:\(1\)
直接给每个数的权值设为 \(2^{a_i}\),能轻松算出一段连续的数的哈希值,直接线段树维护。
难度:\(2.5\)
直接枚举 \(AB\) 的长度,复杂度是 \(\sum \limits_{i=1}^n \frac{n}{i} = O(n \ln n)\) 的,然后考虑对合法的 \(F(A) \leq F(C)\) 计数,注意到 \(F\) 函数的值域为 \(26\),前缀和一下即可。
P15762 [JAG 2025 Summer Camp #1] Inside Yamanote
难度:\(6\)
完全不会线性规划。道路可以随便配等价于我们可以给 \(d_i\) 随便选一个数,但是要满足 \(\left\vert d_i - d_{(i+1) \bmod n}\right\vert \leq L_i\),让我们最大化 \(\sum s_i d_i\) 其中 \(s_i\) 为出入度之差,注意到 \(\sum s_i = 0\) ,由于我们有一个类似差分的限制,考虑设 \(x_i = d_i - d_{i - 1}\),\(d_0\) 可以是随意的一个数,我们可以整体加减 \(d_i\) 答案不变。我们重写一下目标函数, \(C_j = \sum_{i=0}^j c_i\) 是 \(c\) 的前缀和。令 \(a_j = -C_j\) 则目标变为最大化
$ \sum_{j=0}^{N-1} a_j \delta_j$
约束为 \(|\delta_j| \le L_j\) 且 \(\sum \delta_j = 0\)。
引入拉格朗日乘子 \(\lambda\) 处理 \(\sum \delta_j = 0\),等价于最大化
对于每个 \(j\),在 \([-L_j, L_j]\) 内选择 \(\delta_j\) 使 \((a_j + \lambda) \delta_j\) 最大:
- 若 \(a_j + \lambda > 0\),取 \(\delta_j = L_j\);
- 若 \(a_j + \lambda < 0\),取 \(\delta_j = -L_j\)。
为了使 \(\sum \delta_j = 0\),需要选择 \(\lambda\) 使得
也就是说,\(-\lambda\) 是 \(L_j\) 关于 \(a_j\) 的加权中位数。令 \(\lambda^*\) 为该中位数(即 \(a_j\) 的加权中位数),则最大值为
因此,对于任意给定的环形铁路长度 \(L_i\),最大声望就是
最后直接用树状数组维护加权中位数和答案即可。
难度:\(3\)
直接二分答案,对于一个 \(S\) 的后缀 \(S_i\),由 SA 的性质,这个点要么是后缀数组中 \(S_i\) 对应的位置前面的最后一个 \(T_i\),要么是这个位置后面的第一个 \(T_j\)。对于查询 \([l,r]\),只需要二分答案 \(x\),当 \([l,r−x+1]\) 中的最大值大于等于 \(x\) 的时候就判定合法。
难度:\(6.5\)
用 SA 做对于我这种没有码力的人来说完全就是在自残,所以给到 \(6\)。
我们考虑 \(T\) 的每一个后缀 \(T_i\),注意到和 \(T_i\) 的 LCP 为 \(L\) 的是一段区间,如果这一段区间有 \([l, r]\) 中的一个后缀,那么 \(L\) 就是合法的。那我们对按排名每一个 \(T\) 的后缀求出来这么一个 \(L\),统计新增加的子串个数即可。和 height 数组类似,排名靠后一个 \(L\) 的长度也至多减少 \(1\),直接暴力扩展就可以。所以你需要写一个主席树判断是否存在合法的后缀,写一个 ST 表求 LCP。
难度:\(3\)
\(a_i\) 表示以 \(i\) 结尾有多少个 \(AA\) 串,\(b_i\) 表示以 \(i\) 开头有多少个 \(AA\) 串,最后答案就是 \(\sum \limits_{i=1}^{n-1} a_i b_{i + 1}\)。考虑怎么求 \(a_i\)。枚举形如 \(A\) 串的长度 \(len\),然后每 \(len\) 个位置设置一个观察点。一个 \(AA\) 必然会经过两个观察点,我们直接对观察点求 LCP 和 LCS,然后对于相当于对一段区间加,我们直接差分一下即可算出答案,感觉这个题有点怪。
难度:\(4\)
题解区都在干什么,不管了直接二分哈希。我们这里只讨论奇回文串,偶回文是同理的。我们对每一个回文中心求出第一个不是回文的位置,然后跳过他,那么剩下的都是这个不同位置产生的贡献。如果一个位置修改也会产生相应的代价,即破坏原有的回文串。我们直接差分一下就好。
难度:\(6.5\)
难度:\(6.5\)
不知道为什么大黑题场上被过穿了,难道真的是我太菜了?
显然是枚举第一个不同的位置,设当前已经有 \(a\) 个 (,\(b\) 个 ),肯定是把当前的一个 ) 改成 (,然后后面随便搞。那我们肯定上经典结论得到当前这一步的答案是
令 \(x = i - a - 1\) 有:
第二项为:
记 \(f(i,j) = \sum\limits_{x=0}^j \binom{2x + i}{x}\)
其实就是要求
对于相邻的前缀,\(a,b\) 的变化为 \(O(1)\) 的,我们考虑莫队转移求 \(f(i,j)\)。
如果 \(j\) 变的话转移是平凡的,考虑 \(i\) 的变化。
注意到:
\(\begin{aligned} f(i, j) + f(i + 2, j) & = \sum\limits_{x=0}^j \dbinom{2x+i}{x}+\sum\limits_{x=0}^j \dbinom{2x+i + 2}{x} \\ & = \sum\limits_{x=0}^j \left[ \dbinom{2x + i}{x} + \dbinom{2x + i}{x - 1} \right] + \dbinom{2j + i + 2}{j} \\ &= \sum\limits_{x=0}^{j} \dbinom{2x + i + 1}{x} + \dbinom{i+2j+2}{j} \\ &= f(i+1,j) + \dbinom{i+2j+2}{j}\end{aligned}\)
如何我们只需要维护 \(f(i,j)\) 和 \(f(i + 1, j)\),然后就做完了,到现在也不知道是怎么注意到的。。
难度:\(5.5\)
朗读题解。
我们钦定 \(L\) 为 \([1,N]\),\(R\) 为 \((N, N +K]\),\(M\) 为 \((N + K, 2N + K]\) 所以合法的序列为一堆 \(M\) 将序列划分成 \(LRLRLR\) 或者 \(RLRLRL\) 交错的样子,设有 \(p\) 个 \(L\),\(q\) 个 \(R\) 和 \(s\) 个 \(M\)。
设一段中有 \(x\) 个 \(L\),\(y\) 个 \(R\),方案数的 GF 为:\(G(x,y)=1+x+y+2xy+x^2y+xy^2+\dots\)
写成封闭形式就是 $$\frac{(1+x)(1+y)}{1-xy}$$
合法的方案数就是 \([x^p y^q]G(x,y)^{s+1}\)
所以方案数为
然后就能直接做了,时间复杂度 \(O(N + K^3)\)
难度: \(3\)
建议降蓝或者青,基本上一眼秒了。
依旧考虑第一个不同的位置 \(i\)。在这一位有 \(x\) 个合法位置,会对前 \(i-1\) 出现的数 \(ans \leftarrow ans + x \dbinom{n -i}{k-i}(k-i)!\),对于没出现的数 \(t\) 且 \(t<p_i\) 的贡献为 \(ans \leftarrow ans + \dbinom{n -i}{k-i}(k-i)! + (x-1)\dbinom{n-i-1}{k-i-1}(k-i)!\) 对于另外的贡献为 \(ans \leftarrow ans + x \dbinom{n-i-1}{k-i-1} (k-i)!\)
对于第一部分的直接差分一下,后面的可以直接树状数组维护。
难度:\(2.5\)
考虑中间的四个角,让他们左右不重叠,然后减去对角不重叠的情况。
答案为:
难度:\(2.5\)
第一次 AK ABC 喵,板子题,树上莫队 + 值域分块即可。
难度:\(4.5\)
结论就是每个文本串包含的不同单词数之和级别为 \(O(L^{\frac{4}{3}})\) 的,所以我们在每一次 AC 自动机上跳 fail 的时候记录一下,如果他的父亲被经过了,就不再经过了。最后拓扑排序一下即可。

浙公网安备 33010602011771号