「Diary & Solution Set」November 2025 连“停下来”的话 都苦涩到无法说出
11.1
有点害怕,感觉会炸。
考前开玩笑说如果考到一半天放晴了就是我干的,如果没有就是我考炸了,然后雨真的没有停,我也真的考炸了。
然后就 CSP-S2025 游记。
11.2
补了下题,然后无所事事,因为很累。
内驱力仍然不够用,虽然已经高一而且 CSP 考炸了。
11.3
下午又下大雨了啊。已经不知道“雨”这个意象对我来说意味着什么了呢。
在某个角落听着雨落的人啊
这般的漫漫长夜过去后
仍会爱着这些漆黑时光吗
有的时候会尽力去体会过去某个时刻某个阶段的感受,但是无论如何都没有当时的感觉了,最后只留下一点莫名的怅然和忧伤。而在一次次追忆的过程中对过去的感觉越来越模糊,也莫名产生了一种恐慌。可是我就是这么念旧啊。面对名为“成长”的“礼物”,又是如此有心而无力,又是如此无心而无力。
ARC068F Solitaire
考察一个出队序列合法当且仅当其可以分解为不超过两个递减序列,然后 \(1\) 在第 \(k\) 个。
\(1\) 在第 \(k\) 个这个条件不好刻画,于是取其逆排列,偏序关系不会变,还顺手干掉一个限制。
然后是很板的计数部分。
CF1149C Tree Generator™
一个点的深度是其对应左括号的嵌套层数。考察两个点之间的路径,也就是两个点之间的 LCA 怎么求。
这东西感觉很欧拉序,左括号进入子树,右括号出子树,那么两点之间 LCA 其实就是一个区间 \(\min\) 状物。
接着考虑如何对全局求这个答案。这里又被诈骗了,以为线段树不能直接维护,但是其实两个点之间即使算上了非最小值对答案不会有影响,那么线段树直接维护是好做的。
[HNOI/AHOI2018] 转盘
没人觉得被同一个 trick 连着诈骗两次很……吗。
起手式就在诈骗,不管是中途停下来还是绕几圈都是没有意义的,直接在开始停一会儿然后一圈绕完就可以做到最优。那么容易刻画出答案,枚举起点讨论左边右边分离变量求区间最大值。
这个东西看起来不太好做,但是右半部分的式子恰好比左半部分多了 \(n\),所以可以直接把左半部分贡献放到全局上,变成了后缀信息维护,单侧递归即可。
2023-2024 集训队互测 Round 5 栞
感觉很好的题目,不管是思维部分还是计数部分都有耳目一新的感觉(见过的东西还是太少了)。
从 \(p\) 生成 \(q\) 的贪心过程考虑。从小到大考虑,如果能通过调整将一个数分到更前面的位置且仍然能分出 \(k\) 段,贪心地选最靠前的那个划分点。尝试形式化这个模糊的说法。从 \(q\) 的角度看,如果存在 \(q_i>q_{i+1}\) 的地方,一定是因为把在 \(p\) 中 \(q_{i+1}\) 分到前面之后不能再划分为 \(k\) 段。
所以大概知道断点的形式,令第一个 \(q_i>q_{i+1}\) 的位置为 \(x\),\(q_{x+1}\) 在 \(p\) 中的位置为 \(y\),那么从 \(x\) 处划分能划出 \(k\) 段,但是在 \(y\) 处直接划就不行。同时 \((x,y)\) 中间不能有数比 \(p_y(q_{x+1})\) 小,否则不会在 \(q\) 中分到 \(x+1\) 这个位置。
虽然在 \(y\) 处直接划不行,但是 \(p_y\) 最终还是到了 \(x+1\) 这个位置,说明同时划上 \(x,y\) 之后是可以划出 \(k\) 段的。那么 \(y\) 所在段后面应该是一堆单点,否则可以把后面的某个点翻到前面来。
这一部分实际上是结合 \(p\) 生成 \(f(p)\) 的过程与 \(q\) 的最终结果作分析。我一开始做的时候只考虑了 \(p\) 到 \(f(p)\) 的贪心过程,虽然会得到类似形式的东西(比如说在最后长度 \(>1\) 的段 \(p_y\) 是 \([x,y]\) 最小的之类,这里 \(x\) 是当前确定的一个断点,\(y\) 是下一个可能的断点),但是刻画起来终究不方便,所以感觉很困难。
考虑如何计数这个结构。枚举合法的 \(y\),\([x,y]\) 的部分是除了 \(p_y=q_{x+1}\) 随便乱排,\((y,n]\) 已经确定了。
接下来可以发现 \([1,x]\) 的部分本质上就是特殊性质 \(q=(1,2,3,\cdots,n)\)。
考察 \(p\) 生成 \(q\) 的过程,每次选择值域上从最小值开始连续的地方断开,如果能断 \(k\) 次就合法。可以先求出 \(f_i\) 表示长度为 \(i\) 的极小的连续段方案数,答案是 \([x^n]f^k\)。根据组合意义,令阶乘为 \(F\),有 \(F=\dfrac{1}{1-f}\),本题中都可以暴力求。
FPS 24: 24 Problems on Formal Power Series
形式幂级数好玩,但是还是当成无背景的计数题来做。放到一起简单说说,虽然我没打。
A:考虑为什么是 \(1,3,4,6\)。先给每个都塞个 \(1\),变成 \(2,3,5\),然后多项式 \(2+3=5\),就好做了。
B:枚举 \(a,b\),然后做完了。
C:经典问题,对 \(\leq M\) 这个限制容斥即可。
D:关于我还不会不用多项式做法的这件事,我还没想好怎么编。
E:为什么数据范围只有 \(300\),暴力卷 EGF 都能过。
F:矩阵快速幂板子。
G:滑动窗口+回退背包板子。
H:枚举多少次 \(a=0\),做完了。
I:这真的逃不掉多项式了吧。考虑分治卷积。
J:半在线卷积板子。
K:等价于求在 \(n\) 的时候第一次值域 \([1,i]\) 连续,可以写出和栞一样的式子。
L:连 \(i\rightarrow p_i\),等价于没有自环或二元环。没有自环就是错排,二元环的限制容斥掉即可。
M:连通生成子图计数板子,link。
N:答案为 \([x^N]\prod\limits_{i=1}^N\prod\limits_{j=0}^{A_i}x^{ij}\)。后面那个等比数列求和,然后 \(\ln\) 除转减,再 \(\exp\) 回去。
O:考察 Prufer 序列,其中除了 \(1\) 都是质数次。那么 EGF 卷一下就行了。
P:暴力式子为 \(\sum\limits_{i=0}^K\binom{N}{i}m^{N-i}\),这是一个多项式多点求值。
后面的不咋会了,放了。
11.4
整个人被蒙在鼓里的一天。
模拟赛通读题面,T1 \(n\leq 13\) 图计数,这个最短路的限制很不好做啊。T2 没理解透条件,以为是互质才能选。T3 tzy/yzq 做过,但是我不会。T4 会了 \(2|N\)。
在 T1T2T3T4 之间反复横跳。写出这四个字的时候说明这场比赛已经炸了。T1 猜到了复杂度,就是爆搜按最短路分层,转移比较简单,但是调了好久,11:00 才过。中途写了 T3T4 暴力,同时发现 T3 利用 Hall 定理可以得到神秘的不会分析复杂度的打不过暴力的做法。T2 11:50 反应过来条件转化错了,然后一通转化之后还是错了,淦。最后 \(100+30+50+10=190\),T4 挂了 5pts。
赛后发现没有同时过前三个题的。同时这个 T3 感觉没见过不可能会做,怎么想得到的。得知赛前他们有人找到 T3T4 原题并分享题解,怪不得 T3 通过率比 T1T2 高。之后得知 tzy T1 代码是 czy 的,搁着没有一个题是自己做的是吧(
tzy 那个神人怎么又去上语文课了。
[省选联考 2021 A/B 卷] 滚榜
我咋这么菜。
考虑将一个滚榜方案映射到最优的 \(b\) 的分配方案上计数,直接状压是 \(O(2^nn^2m^2)\)。
但是由于 \(b\) 单调不增所以可以费用提前计算,可以砍掉记录上一个 \(b\) 的那一维,于是做到 \(O(2^nn^2m)\)。
CF1608F MEX counting
前面一个数对后面 \(MEX\) 的影响不好记录,那么延迟钦定。
令 \(dp_{i,j,k}\) 表示考虑前 \(i\) 个数,\(MEX\) 为 \(j\),有 \(k\) 种大于 \(j\) 的数。转移时枚举前 \(i+1\) 的 \(MEX\) \(m\),\(dp_{i+1,m,k+1-(m-j)}\leftarrow dp_{i,j,k}\times \dfrac{k!}{[k+1-(m-j)]!}\),\(dp_{i+1,j,k}\leftarrow dp_{i,j,k}\times (j+k)\),\(dp_{i+1,j,k+1}\leftarrow dp_{i,j,k}\)。由于有 \(b_i\) 的限制,状态数 \(O(n^2k)\),转移 \(O(k)\)。可以前缀和优化做到 \(O(n^2k)\)。
这里状态定义如果是 \(k\) 个大于 \(j\) 的数,只能做到 \(O(n^2k^3)\) 或者 \(O(n^2k^2)\)。主要原因在于 \(MEX\) 这样一个按种类可重复贡献的东西处理个数是不好做的。果然还是太菜了。
11.5
极 度 愤 怒。为自己的愚蠢感到 极 度 愤 怒。
开场读题,T1 博弈,T2T3 计数,T4 神仙题,但是估计没有时间打。
T1 不会。
T2 转化题意。容斥掉 \(p_i\not=i\) 的限制,基于斯特林数有 \(O(n^2)\) 做法。感觉没有前途。又想出一个 \(O(n^2)\) 递推,感觉更没有前途了。于是拆斯特林通项,但是推了好久。推完之后处理个前缀和可以做到 \(O(n^2)\)。为什么还是 \(O(n^2)\)。
怎么已经 10:00 了。赶紧写个 T4 \(O(n^2\log n)\) 暴力先。怎么只有 28pts。
T1 不会。
虽然中途经常切去 T3,但是连第一档 8pts 都没推对。会了第四问的 \(O(n^4)\) 做法,有 40pts,写。
调不出来。T1 还没过。T1 不会。
T2 不会优化。
赛后看题解,哦原来外面两层循环是一个二项式定理状物。也就是场上我写了一个巨丑无比的 \(O(n^2)\) 循环去算二项式定理 \(O(\log n)\) 解决的问题。冷静下来,发现需要一个线性求 \(i^n\),我怎么不会。哦原来线性筛就可以了。
CF2066D Club of Young Aircraft Builders
首先形式化限制。等价于 \(\forall 1\leq i\leq n,\sum\limits_{j=1}^i [a_j\geq a_i] \leq c\) 且 \(n\) 的出现次数为 \(c\)。
从前往后可以飞的楼层是单调的,假设在位置 \(i\) 当前能飞的楼层是 \(j\sim n\),只关心 \(j\sim n\) 中有多少个,所以可以延迟钦定。考虑 \(dp_{i,j,k}\) 表示考虑前 \(i\) 个位置,能飞的有 \(j\sim n\),\(j\sim n\) 中有 \(k\) 个。转移时如果 \(k<c-1\),直接在 \(k\) 上面加一。否则 \(j\) 这一层不能再飞了,在这里钦定 \(j\) 的位置即可,系数比较好算。
[ROIR 2025] 寻找宝藏
开始从简单 dp 复健码力,虽然感觉选错题了。
奶龙题,显然这个限制差分之后只有少量信息有用,把这些东西记录下来记搜就可以了,大常数擦边通过。
11.6
lf 给我们训 ds,不是都要 NOIP 了还做历史和/最值操作/历史最值板子啊,这个时候来上 ds 新课是何の意味啊。水了几个题之后摆烂了,感觉不如计数。
晚上原题做不起,很难受啊。跟 TQ 吐槽多校模拟赛,感觉多校的目的是恶心人,希望能打正常的模拟赛。
或许是早有预谋
即使再苦苦哀求
滴答声仍无情地
将泛黄的记忆揉皱
[十二省联考 2019] 希望
考虑一个集合点 \(u\) 合法的方案数,这要求每个连通块内的点到 \(u\) 的距离不超过 \(L\)。有 \(dp_{u,i}\) 表示 \(u\) 子树内部包含 \(u\) 的连通块,所有点到 \(u\) 的距离不超过 \(i\) 的方案数。可以长剖+换根解决一个点的问题,但是会算重。
子集容斥,考察一个集合合法的方案数。大概是对于这个集合的虚树,然后把叶子的子树部分与根外面的部分乘起来。这个方向感觉很没有前途,可以放弃把这玩意儿放到树上 dp 的想法。但是这也启发一个性质:如果一个集合合法,它们的斯坦纳树也是合法的,所以只需要对所有树上连通块进行容斥。
计数对象转变为树上连通块,那么先算一下容斥系数,考虑所有以其为斯坦纳树的集合 \(S\) 的 \((-1)^{|S|-1}\) 之和。一个连通块对应到 \(2^c\) 个集合,其中 \(c\) 是该连通块的非叶节点个数。可以发现大多数情况下,一个连通块对应到偶数个集合,而且系数恰好抵消为 \(0\)。当且仅当该连通块 \(c=0\),也就是该连通块全都是叶子的时候才会有系数。而连通块内的点全都是叶子(度数 \(\leq 1\))只有一条边和一个点两种情况。其中一条边的系数是 \(-1\),点的系数是 \(1\)。这样之后就好做了。
这个 dp 全是 dirty work,都是什么人在做这个题。
CF1887D Split
我再不会这种题就滚回去考半期。
考虑钦定左半边的最大值 \(i\),求出其作为最大值的区间 \([L_i,R_i]\)。那么其对 \(l\in[L_i,i]\) 有贡献,再考虑 \(r\) 的范围,找到 \(R_i\) 右边第一个比 \(i\) 小的 \(p\),\(r\in(R_i,p)\)。然后是个矩形加单点查。
CF1526E Oolimry and Suffix Array
今晚上是咋了。
只用考察排名相邻的后缀 \(sa_i\) 与 \(sa_{i-1}\)。先比较 \(s_{sa_i}\) 与 \(s_{sa_{i-1}}\),若 \(s_{sa_{i-1}}<s_{sa_i}\) 不用管了,否则限制相同继续向后比较,这可以由 \(rk_{sa_{i}+1}\) 与 \(rk_{sa_{i-1}+1}\) 得到。由此可以得知 \(s_{sa_{i-1}}\) 与 \(s_{sa_i}\) 的限制,最后会得到若干 \(\leq\) 与 \(<\) 组成的限制。计其中有 \(m\) 个 \(\leq\),答案为 \(\binom{m+k}{n}\)。
CF1799F Count Voting
如果没有 \(t\) 的限制,答案就是多重集排列数。考虑容斥掉这个限制,拆式子之后直接卷就可以做到 \(O(n^2)\)。
11.7
今天上午怎么突然多了一场多校模拟赛。
T1 经典偶减奇 trick,出题人非要在题解里秀单位根反演,神经病。T2 搬的这个,std 直接做了 \(100\) 项泰勒展开还被 hack 了,神经病。T3 搬的这个,简单容斥判定型计数,题解写的啥啊看不懂,神经病。T4 搬的这个,题号这么小都敢搬,神经病。
赛后 T3T4 过一车,这就是搬题的魅力吗。
ARC193C Grid Coloring 3
考虑判定,一个操作可能被后面的操作覆盖。那么考虑时光倒流,每次贪心地将可能的操作删去,那么删去之后一个之前的操作会被删成一行一列或一个十字。特别地,最后一步不会被覆盖,一步都做不了是不行的。
知道如何判定之后就简单了。对判定过程计数,\(dp_{i,j}\) 表示 \(i\) 行 \(j\) 列的网格的方案数。转移时钦定删尽可能多的来保证不重,这点可以用容斥做到。
CF1628D Game on Sum
先考虑 \(n,m\leq 2000\),明示 dp。令 \(dp_{i,j}\) 表示还要进行 \(i\) 轮,Bob 还能进行 \(j\) 次减操作,有边界 \(dp_{i,0}=i\times k\),转移 \(dp_{i,j}=\max\{\min_{x\in[0,k]}(dp_{i-1,j-1}-x,dp_{i-1,j}+x)\}\),那么 Alice 会贪心地选 \(x=\dfrac{dp_{i-1,j-1}-dp_{i-1,j}}{2}\) 使得 \(\min\) 的两边一样,取到 \(\dfrac{dp_{i-1,j-1}+dp_{i,j}}{2}\)。这样可以做到 \(O(n^2)\)。
这个 dp 式子很工整,容易想到对每个 \((i,0)\) 考虑其对 \((n,n-m)\) 的贡献。相当于在网格图上向右或向右上走一步,总的步数是 \(n-i\),其中有 \(n-m\) 次向右上,第一步必须向右上,因为不能转移到 \((i+1,0)\)。所以方案数为 \(\dfrac{\binom{n-1-i}{n-1-m}}{2^{n-i}}\)。需要特判 \(n=m\)。
CF494C Helping People
整个序列有用的只有 \(O(q)\) 个段。考察线段不交的性质,明示从小区间到大区间 dp。于是有 \(dp_{i,j}\) 表示第 \(i\) 个区间内部最大值为 \(j\) 的概率,转移是简单的。一个区间内可能的最大值情况数不会超过其最大深度,所以是 \(O(q^2)\)。
CF2122E Greedy Grid Counting
观察性质题。考察什么情况下贪心路径不优于最大路径。设贪心路径的拐角 \(x\) 与最大路径的拐角 \(y\):
如果 \(x>y\),由于没在 \(y\) 拐,有 \(\forall i\in[y,x) a_{1,i+1}\geq a_{2,i}\),这与最大路径的定义矛盾。
如果 \(x<y\),有 \(a_{1,x+1}< a_{2,x}\)。不合法还需要条件 \(\sum\limits_{i=x+1}^y a_{1,i}>\sum\limits_{i=x}^{y-1} a_{2,i}\)。这两个式子的形式类似,令 \(b_i=a_{1,i+1}-a_{2,i}\),限制即为 \(b_x<0\),\(\sum\limits_{i=x}^{y-1} b_i>0\),这是不合法的限制。
这个东西看上去已经可以 dp 了。令 \(dp_{i,j}\) 表示考虑前 \(i\) 个,从上一个 \(b_k<0\) 的位置到 \(i\) 的总和为 \(j\) 的方案数,合法要求 \(j\leq 0\)。转移是简单的,需要特殊考虑一开始没有 \(b_i<0\) 的情况。
CF2164
晚上 40min 打了 ABCD,E 思考了 10min 就准备下班了,明日再战。
A:容易证明 \(x\) 在最小值与最大值之间是充要条件。
B:不解释。
C:小清新贪心。由于砍一个 \(c_i>0\) 的怪一定是不劣的,考虑先处理这些怪。按生命值排序,每次拿攻击值尽可能小的剑砍它,这样可以让最终剑的攻击值集合尽可能优。然后再拿已经最优的剑集合去贪心砍 \(c_i=0\) 的怪即可。
D:小清新贪心。从后往前扫,贪心地,\(t_i\) 尽可能是由最大的 \(j\) 满足 \(i\leq j\) 且 \(s_i=t_j\) 覆盖的。同时容易发现覆盖区间是不能有包含的,也就是左右端点必须单调,那么可以二分找到最优位置。后面就是一个简单的模拟,一开始脑子犯抽了浪费了 5min。
以下是 11.8 的记录。
E:题目的限制很像欧拉回路,问题转变为在奇度点之间连边的最小权值,容易证明在偶度点上加边是不优的。那么基于这个奇怪的边全刻画方式,考虑 Kruskal 重构树,但是仍然不好刻画一条边对于两个点 \((u,v)\) 的合法性。那么考虑按顺序加入每条边,加入该边后的连通块都可以以该边作为边权连边,可以启发式合并实现。
11.8
多校模拟赛,lf 说很 NOIP,但是多校的模拟赛就没有哪个长得像 NOIP 的。
T1 \(n=500\),以为是啥呢结果是简单计数 dp。T2 \(n=500\),可以转化为最大团计数,这做个寂寞,那么挖掘性质,这个图的性质看起来很刻意,但是还是不会。T3 简单分块,但是维护凸包移项相乘比较斜率却没有开 __int128 调了 30min。T4 一眼 ACAM 上 dp,需要缩 DFA,但是要求方案字典序最小,调不出来,淦。
赛后发现 T4 原来有 SA 做法。T2 太神秘了。
[COCI 2025/2026 #1] 松鼠 / Zagi
很好玩的题目!赛时 yzq 跟我进行了一些讨论,得到了一个复杂度不明的做法,后来发现应该是 \(O(nV^2)\)。一开始他 SG 函数写的 01,不知道为什么能过第一个包。
公平组合游戏,考虑 SG。对于一个询问,枚举第一步选的颜色,划分为若干子博弈。其中除了左右两边的散块,中间的块 \([l,r]\) 都满足 \(a_{l-1}=a_{r+1}=x\),\(x\) 是选的颜色,不妨称其为整块。
于是考虑预处理出所有整块的答案。可以发现这其实与原问题没有本质区别,所以问题变为如何在一个可接受的复杂度内求解。
整块的个数是 \(O(n)\) 级别的,猜测有用的散块是 \(O(nV)\) 级别,其中 \(V=\max a\)。对散块其实也有限制 \(a_{r+1}=x\) 或者 \(a_{l-1}=x\),其中不能含有 \(x\),考虑对每个 \(x\) 统计可以发现这是 \(O(nV)\) 的。
每次递归的时候是 \(O(V)\) 的转移,由于 SG 函数不会超过 \(V\) 所以可以状压 \(O(1)\) 求 mex。
11.9
做了一个让我找不到一个形容词来形容的梦,梦到了初中三年的好多好多。好想回到过去啊。
[NOISG 2018 Finals] Safety
slope trick 板题。列出暴力 dp 式子:\(dp_{i,j}\) 表示考虑前 \(i\) 个,将第 \(i\) 个调整至 \(j\) 的答案。\(dp_{i,j}=\min\limits_{k=j-H}^{k=j+H}\{dp_{i-1,H}+|s_i-j|\}\)。这是经典的 slope trick 状物,用堆维护 \(j\geq 0\) 的部分即可。
ABC431F Almost Sorted 2
不知道为什么机房一群人在讨论这个题,顺手做了。
考察这个与相邻两个数有关的限制,肯定是从值域上去做。考虑从大到小插入,这样可以排除掉插入时后面那个数的影响,\(x\) 可以插在 \([x,x+D]\) 后面,这个插板法即可。
11.10
屈服于命运了。
今日才达成 luogu 连续打卡 100 天,停课的功劳。
今天上午开了 5 个板子题,不知道何意味。下午总算是开出正常质量的题目,我泪目了。
CF516D Drazil and Morning Exercise
首先换根求出每个点作为根时的最大深度 \(f_i\),则问题转化为求最大的 \(|S|\) 满足 \(S\) 是连通块且 \(\max\limits_{i\in S}f_i-\min\limits_{i\in S}f_i\leq l\)。直接线段树分治可以做到 \(O(nq\log^2n)\) 的超绝复杂度。
做成这个样子肯定是因为没有利用好 \(f\) 的性质。以中心为根的话 \(f\) 从根到叶子是单调的。所以考虑从大到小扫描线,则并查集不需要分裂或撤销,做到 \(O(nq\alpha(n)+n\log n)\)。
JOISC2017 鉄道旅行 (Railway Trip)
这个题太牛了吧。
首先手玩样例大致可以猜到所在的 \(L_i\) 应该是单峰的,如果中间出现 \(L_i>L_k<L_j\) 的情况,\(k\) 是可以省去的。那么如果进行从小到大的定向,可以看做询问的两个点向上跳到同一个点。分讨汇合的位置,发现需要求跳若干步后向左或向右最远能到的地方。
首先考察一个点可以一步到达的地方,是左边或右边第一个比它大的位置。那么如果有足够的注意力或者经验可以发现走 \(k\) 步的左右端点一定是在 \(k-1\) 步的左右端点基础上得来的,于是可以倍增维护。
11.11
双十一打模拟赛。但是一车人有 T3T4 题解,即使拼尽全力打出 T4 仍然没有区分度。T3 还只有 10pts,这咋打。
QOJ5034 >.<
套路题。考虑暴力就是建出 AC 自动机跑最短路,用主席树优化 AC 自动机即可。由于一个点和其 fail 树上父亲出边的差异总和是 \(O(\sum p)\) 的所以复杂度正确。模拟赛场上懒得写所以直接跑 dijkstra 加了个剪枝飞过去了,果然模拟赛是不会有有心人造数据的。
[CEOI 2025] highest
我咋没见过。如果只有 \(1\) 是可以直接倍增的。在 \(2\) 存在的情况下会导致 \(2^i\) 可能从 \(2^{i-1}-1\) 走一个 \(2\) 再走一个 \(2^{i-1}-1\) 得到,跳过了 \(2^{i-1}\)。那么可以考虑再维护 \(2^i-1\) 步的答案做倍增。
UOJ284 快乐游戏鸡
首先形式化答案,假设 \(s\rightarrow t\) 上最大值为 \(x\),则要在 \(s\) 子树内选出 \(k\) 个 \(dep,w\) 均单调递增的点(记作 \(p_1\sim p_k\)),则答案为 \(\sum\limits_{i=1}^k (w_i-w_{i-1})(dep_{p_i}-dep_s)+dep_t-dep_s\)。这个把括号拆一下,然后拿单调栈维护子树信息即可,每次查询时二分。可以长剖或者启发式合并,重链合并好像跑得更快,但是我写的长剖调了好久。
[CEOI 2025] Equal Mex
简单贪心不会,感觉要长脑子了。
容易发现段数 \(k\) 的合法性是单调的,问题转化为最大划分,要求每个子段的 \(\mathtt{mex}\) 与原区间相同。
所以将极小的 \(\mathtt{mex}\) 区间拿出来做贪心即可。由于这些区间是不交的,所以可以知道下一个选的区间,也就可以倍增优化。
11.12
半期考试日,但是模拟赛,还是高二学长组的。
T1 简单构造,好像有一车人被卡了细节,不理解。T2 是之前的月赛题,是 FAOI 团里的那个学长搬的,但是我思考了 10min 不会于是跳过。T3 套路题。T4 套路题,是带修的期望逆序对,但是调了 inf 小时。所以最后 \(100+0+100+100=300\),反映到多校榜上就是一大团绿色中间冒出来一个很醒目的白色。
下午 gm 来看望,带来若(da)干(liang)小零食。
怎么机房全开始当教练了。
[CEOI 2008] order
板板题。这是最大权闭合子图状物,考虑最小割,让源点向工作连容量为收益的边,工作向可租用的机器连租用费用,机器向汇点连买的费用,答案即为总收益减去最小割。
[CEOI 2011] Balloons
我咋这么菜。感觉很 educational 啊。
容易得到一个点的实际半径 \(R_i\) 为 \(\min\{\min\limits_{j=1}^i \frac{(x_i-x_j)^2}{4R_j},r_i\}\),考虑如何优化。
如果这是个一次式就可以直接斜率优化,但是这是个分式,会有诡异的二次项。那么考察 \(x,r,R\) 的单调性,只有 \(x\) 是单调递增的。沿用斜率优化的思路,对于两个决策点 \(j,k(j<k)\) 与当前点 \(i\),\(j\) 优于 \(k\) 要求 \(\frac{(x_i-x_j)^2}{4R_j}<\frac{(x_i-x_k)^2}{4R_k}\),由于 \(x_j<x_k\),一定有 \(R_j>R_k\)。这看起来很废话,但是如果进一步探究可以发现对于一个 \(R_j>R_k>R_i\) 的决策来说,\(j\) 一定不优于 \(k\)。由于决策点 \(x\) 与 \(R\) 的单调性,\(R_k<\frac{(x_k-x_j)^2}{4R_j}\),而 \(\frac{(x_i-x_j)^2}{4R_j}>\frac{(x_k-x_j)^2}{4R_j}\),于是证明了决策单调性。
所以可以像斜率优化一样用单调栈维护。
[CEOI 2011] Hotel
我咋这么菜 × 2。
考虑如果知道了要选哪些订单,只需要贪心按 \(d\) 从大到小加入订单,再贪心分配能装下的成本最小的房间。好像不太好做,但是数据范围有 \(c\) 关于 \(p\) 的单调性,这看起来是为了保证某种贪心做法的正确性。那么容易联想到第 \(k\) 大问题的做法:动态维护所有订单可能的贡献,每次将贡献最大的拿出来分配,不过动态维护是不好做的。
好的上面都是无效思考。接着考虑这好像很像那个啥求婚问题,就是将订单挂在所有能接受它的房间上面并按成本从小到大请求,每一轮所有房间接受能接受的最大订单。这个东西是好做的。
[NOIP2024] 树的遍历
我去年场上咋这么聪明,居然会 \(k=2\) 但是不会菊花的特殊性质()
从 \(k=2\) 的做法出发,继续考虑容斥。一个 key observation 是当且仅当钦定的关键边在原树上在一条链上时有贡献。同时和希望那题一样,可以得到一个钦定的集合的方案数等价于其斯坦纳树,紧接着也和希望那题一样,只需要考虑钦定一条边/两条边的情况。这是容易在树上 dp 容斥的,即使没有观察到后面这步也是一样的式子。
11.13
神秘 CQ 友谊赛。应该是最后一个进考场的。看题,我去旁边两个人怎么键盘敲这么快,我去 T1 真的这么简单吗我咋不会。想了半个小时还是不会啊,感觉完了。这个 T4 感觉是不可做的防 AK 题,放了。T2 我咋也不会。T3 花了 5min 想了下好像会了,就是枚举断点确定方向扫描线就做完了,很快写了过了。1h 过了一道题,还算可以吧,旁边的人怎么还在做 T1。这时 T1 玩出了正解做法,但是有点细节啊。写,过大样例。我去大样例怎么这么水。不管了先做 T2,这个数据范围矩阵就可以了。我去还要写向量乘矩阵。我去我怎么方案数算重了。哦其实改一下转移矩阵就可以了。我去怎么过不了后面两个大样例。我去模数乘二爆 int 了,出题人的浮木呢。还有 1h,写了 T4 20pts。最后 10min 发现 T1 假了,有个 corner 没判,大样例太水了。最后被绑点成 50pts。T2 发现 sub1 挂了,幸好没有子任务依赖还有 95pts。最后 \(50+95+100+20=265\),能在排行榜第一页找到人吗。队线 320,感觉可以似了。
11.14
我求您了怎么要 NOIP 了还在拉线段树优化建图板子,咱练点题可以吗。
中午听说上午化学考的很难。两个 dalao 在教室讨论生物题,看到是遗传就凑了个热闹。题目的条件是某隐形遗传病基因 a 的基因频率为 \(\frac{1}{100}\),问一方是 aa 另一方是正常人生出子代患病的概率。两个人在研究答案为什么是 \(\frac{1}{101}\),更确切的说是在探讨为什么分母是 \(101\)。原来是因为没有注意到分母应该是正常人,所以正常人是 Aa 的概率应该是 \(\frac{198}{9999}=\frac{2}{101}\)。咱一眼就看出来了问题,看来就算 NOIP 之后退役也还有救。
连续颓了两天了,咋这么颓废。看学长博客,学长怎么都这么强,感觉 cqbz 要栽在我们这一届上了。学长怎么都这么传奇,我这样的普通人能做到什么呢。
想起来还有个小清新黑计数没放出来,咱退役前还是要留点遗产的吧。但是感觉投哪儿都不合适/ll
[COTS 2017] 盗道 Krimošten
yzq 老本行的经典问题,所以记录一下。
由于这个分段函数是单调不降的,所以容易用线段树维护其复合,可以做到在线 \(O(n\log n+q\log^2 n)\),能直接通过。具体在合并左右儿子时使用双指针即可做到 \(O(n\log n)\) 预处理。
但是这样过掉 5e5 的题好像不太道德,题目并没有强制在线,那么考虑离线下来,在左端点插入询问,在右端点删除。容易用树状数组解决。
[ZJOI2016] 线段树
经典题,学习。
起手式拆成对每个位置求 \(\leq v\) 的方案数。令 \(dp_{i,l,r}\) 表示进行 \(i\) 次操作后 \([l,r]\) 为极大 \(\leq v\) 的方案数,转移是简单的,可以前缀和优化做到 \(O(n^3q)\)。由于数据随机,每次将有变化的区间重新计算就可以通过。
考虑优化,对每个 \(v\) 做这个 dp 感觉十分浪费,考虑拉插/优化贡献计算。从贡献上动手,容易发现拆下贡献一起转移就可以了。
CF771D Bear and Company
脑子太晕说没印象被 yzq 骂了。
数据范围比较小,容易想到 \(dp_{i,j,k,c}\) 表示当前填了 \(i\) 个 V,\(j\) 个 K,\(k\) 个其它字符且最后一个填的 \(c\) 的最小代价。转移时由于相同性质的字符一定不会发生交换,可以得到一个类似偏序的贡献。
[CEOI 2016] popeala
首先要做 \(S\) 轮 dp 先把复杂度乘上 \(S\) 然后只考虑一轮 dp。由于 \(n\) 很小,因此转移时只需要枚举当前段有多少人过就可以了。具体实现可以开 \(n+1\) 个单调队列。
[CEOI 2021] Diversity
手玩+观察样例容易得到贪心策略:相同的数放在一起,且出现次数是单峰状物,从大到小轮流在左边塞一个右边塞一个。形式化答案之后观察数据范围容易猜到是 \(O(q\sqrt{n})\) 莫队。
11.15
上午 3+1 模拟赛,不好说。前三题都很水,但是 T1 有 corner T2 要取模卡掉了一车人。T3 怎么有一车牛鬼蛇神做法。
T4 的结论以为在非单峰情况下是假的所以没有继续深入,但是方向是对的。Ad-hoc 能力还是太弱了。
晚上秽土重生打 ABC,22min 全场第 7 个过 F,心态++。D 调了半天还 WA 了,心态 -= inf。接着 B 吃了一发罚时,只剩 40min 了才过一个题,有点慌啊,不会 AK 不了吧。先写个 A 稳住心态,然后发现 G 是卷积板子再稳一手。CE 比较简单,写,E 调了一会儿,只剩 12min 了,会赢吗。重构 B,过了。回去调 D,我去我怎么用了 set,要是有重复元素就去世了,改成 multiset 过掉了。惊险上了 1200,可以打 ARC Rated 了。
总的来说太久没打还是生疏了。看来要加训了,不然打个 ABC 都要被人笑话。

CF1693E Outermost Maximums
手玩可以得到一个贪心策略,每次选定最大值将其变为左边和右边的最大值中更小的那个,直接模拟可以做到 \(O(n^2)\)。一个自然的想法是拆开算每个点的贡献,但是点之间有影响。合理猜测存在合法方案使得每个点之间互不影响。容易发现这是对的,可以值域从大到小归纳得到。
那么从值域上看,每次跳到在位置上左边的最大值和右边的最大值,这个东西有结合律,容易用线段树维护。
11.16
晚上 ARC,30min 过 ABC 看榜 rk11,感觉要上大分。结果 E 最后没调出来,原来是忘记取模了,最后屈辱 +725。
[CEOI 2022] Abracadabra
手玩容易发现这个东西大概是弱化版冒泡排序,仍然是按前缀最大值分段但是操作是归并而非将前缀最大值提到最后面。每次会将跨越中间的段劈成两半,就是对前后两半的前缀最大值。段只会变多不会变少,容易拿个数据结构维护做到 \(O(n\log n)\)。
ARC210E Subset Sum Gaps
感觉是容易被榜带偏的题。
手玩、观察样例、分析数据范围大概都可以得到 key observation:答案个数在 \(O(\log_{1.01} \sum a)\) 级别。于是考虑维护连续段,做 \(n\) 次线段取并操作即可。场上调了半天,最后还没取模,感觉可以等死了。
11.17
AGC028D Chords
怎么做上专业对口题了。
套路地,考虑对每个连通块计算答案。如果这是一般图,考虑一个集幂做法,\(f_S\) 表示 \(S\) 内部随便乱连的方案数,\(g=\ln f\) 则表示 \(S\) 内部连通的方案数。然后统计答案就是 \(\sum g_S\times f_{\{1,2,\cdots,n\}\backslash S}\),只不过由于这个判断相交的形式,具体的计算还是有差别,比如这个 \(\ln\) 和统计答案部分实际上要求两个东西不能相交。
从不能相交出发,考察一个连通块,发现其可以与区间形成单射关系,满足这个区间是极小的包含这个连通块的区间,这样内部就是独立的,可以直接套用集幂做法。
11.18
上午的模拟赛 T1T2 神秘题,T3 四元环计数板子,T4 天降之物但是修改是区间覆盖,没调出来,不评价。
下午开的题目分别是 \(n\leq 20,m\leq 23,N\leq 17,N\leq 15\),做爽了。其中有一个连通二分生成子图计数板子。还有一个题一开始以为要边双计数结果是最优化问题。
[PKUWC2018] 随机算法
一个 naive 的想法是记录最大独立集和已经考虑的排列进行 dp,但是状态数是 \(O(3^n)\)。考虑压缩状态,只记录最大独立集。依次加入独立集中的点,对于一个不在独立集中的点,只被第一个与其相邻的在独立集中的点所限制。所以可以在加入一个独立集中的点时考虑所有与其相邻的还未被限制的点的位置,这是容易的。
AGC008F Black Radius
为什么这个入这两天只在博客里放了两个题呢?因为昨天一下午+晚上与今天半个晚自习都在做这个题,已经出院,感觉良好。和题解做法完全不一样的好嘛,已畏惧。
11.19
模拟赛 T1 构造,T2 维护凸包,T3 矩阵求逆+线段树合并,T4 奇妙计数。但是我不会 T1。
感觉已经透支了这一周的精力,卷是卷不过的。那还是颓吧。希望还有明天。
[CEOI 2020] 星际迷航
首先考虑 \(D=1\)。换根求出每个点为起点时是先手/后手必胜。分讨从第 \(0\) 棵树连向第 \(1\) 棵树的边端点胜利情况:
-
如果连向一个必胜点,该边的起点状态不变,全局答案等价于第 \(0\) 棵树的答案。
-
如果连向一个必败点,该边的起点必胜。
于是考虑求出有多少个点满足在连向必败点之后会将全局答案必胜。同样对全局答案进行一些分讨之后容易求得答案。\(D>1\) 矩阵快速幂优化即可。
11.20
久违地,温柔的日光从冬日的冰冷里漫溢开来。透过机房紧闭的窗户和窗帘,试图在一缕细缝中祈求名为春日的温暖,却被空调制热的机械轰鸣紧紧包裹住,连往昔的喧嚣都渐渐淡去。
本来一次又一次告诫自己不要空有戾气,可是看到下午开的一堆烂题和别人天天做高质量题目一比较就很难受啊好不好。
班上流感传播严重,但是体弱多病的我居然没有中招。
CF1774G Segment Covering
询问 \([l,r]\) 等价于对于一个线段集合 \(S\),如果 \(S\) 的并是 \([l,r]\),会有 \((-1)^{|S|}\) 的贡献。直接做 dp 是不好做多次区间询问的,但是可以启发一点:假设对于集合 \(S\) 与线段 \(I\in S\) 来说,\(S\backslash \{I\}\) 的线段并与 \(S\) 的线段并相同,那么 \(S\backslash\{I\}\) 不能与 \(I\) 同时出现,否则贡献抵消为 \(0\)。
具象化一下,发现会产生贡献的集合 \(S\) 满足在按右端点 \(R\) 排序后左端点 \(L\) 单增且对于相邻的两条线段 \([L_1,R_1]\) 与 \([L_2,R_2]\),不存在线段 \([L_3,R_3]\) 使得 \(L_1\leq L_3\land R_3\leq R_2\)。
接着可以发现对于一个线段来说能够接在后面的线段是唯一的。于是可以倍增维护奇偶性。
[CEOI 2020] 春季大扫除
睡眠严重不足,认知力下降严重,只好刷水题了。
对于单次询问,统计每条边的贡献,如果子树内叶子为奇数个贡献为 \(1\) 否则为 \(2\)。
多次询问就是链上修改,可以虚树做单 log,但是我写二次排序被卡常了。
11.21
模拟赛读题,T2 很神秘,T3 看起来像小清新计数,T4 怎么这么难读,还有串串。看懂 T4 了,第一反应是 fail 树上线段树合并,但是复杂度似乎并不能降到单 log,不如树状数组+DSU on tree。8:40 过了大样例。然后到 10:00 过了 T1T3。然后觉得 T2 太神秘了,找出了 \(k=0\) 的规律但是只有 20pts 所以觉得和正解没有什么关系。结果是因为没有注意到 key observation。
11.22
全真模拟,但是好困好困。
看题,T1 不会,T3 懒得读,T4 看懂了,T4 会了,写,过了。T1 会了,写,过了。T2 不会。T3 读懂了,好像可以根号分治,\(>\sqrt n\) 的部分可以暴力做。暴力写挂了,调,小样例过了,大样例过不去。大样例怎么不符合数据范围,生气了,改,过了。不会 \(\leq \sqrt n\) 的部分,T2 还没写,急。T2 会了,答案的偏移量是 \(O(\sqrt n)\) 级别,但是 4e5 1s 何意味,是不是假了。旁边的老哥别唱歌了。哦 T2 可以均摊到 \(O(n)\) 但是没有多少时间了,这个状态写不了细节,看 T3。还是不会 \(\leq \sqrt n\) 的部分,分治阈值开成 \(0\) 遗憾离场。是不是人均 AK 场没上 300,感觉完了。
T2 题解:
实际上这东西不好卡,常数很小,所以搬题人将数据范围开到了 \(4 \times 10^5\) 。
T3 题解:
所以对于长度不大于 \(\sqrt n\) 的路径这个东西是十分好求的。
红温了。但是大家都挂分了我反向挂(T3 多过了一个 sub),rp -= inf。
反应过来 T3 对于长度 \(\leq \sqrt n\) 的部分暴力枚举前后两个点算贡献是对的,因为有 \(\sum a_i\leq n\) 且 \(a_i\leq \sqrt n\) 的限制下 \(\sum a_i^2\leq n\sqrt n\),这下变成奶龙了。
11.24
COCI 乱做找手感。
[COCI 2024/2025 #1] 教师 / Učiteljica
\(k=1\) 是经典问题,扫描线板子。由于 \(k\) 很小,考虑用 \(2^k\) 的代价容斥掉全部满足条件的限制,转化为满足至少一个条件,这是好做的。
[COCI 2024/2025 #5] 树树 2 / Stablo II
考虑离线倒序处理,这样每个点只会被遍历一次,用并查集维护即可。
[COCI 2017/2018 #5] Planinarenje
二分图博弈,先手获胜当且仅当起始点是最大匹配的关键点。二分图最大匹配关键点满足在一个最大匹配中,不存在从未匹配点出发到达该顶点的偶数长度的交错路。
[GCJ 2008 AMER SemiFinal] King
先手获胜当且仅当起始点是最大匹配的关键点。由于 \(R,C\) 较小且图比较特殊,可以轮廓线 dp 求最大匹配。
[COCI 2015/2016 #5] OOP
CSP-S2025T3 既视感。
首先考虑将限制刻画成前后缀关系与长度限制……然后发现这是个三维偏序,就像我 CSP 场上一样坠机了。
考虑将其转化为多模匹配问题,对于形如 S*T 的询问将其化为 T*S,模板 S 化为 S*S,则能产生贡献需要满足子串关系,同时也有长度限制,可以二维偏序。
实际上可以暴力跳 fail 做到线性,因为这样做是 \(O(\sum L)\) 的。
[COCI 2015/2016 #5] PODNIZOVI
一开始读错题了以为是子串。
考虑在子序列自动机上从小到大枚举出子序列。由于可能有一堆相同的子序列,直接暴力转移会炸掉。考虑对于当前子序列的可能结尾 \(p_1,p_2,\cdots,p_k\),二分出最小的能够进行转移的出边,这样就能保证每次枚举都能产生贡献。
[COCI 2015/2016 #1] RELATIVNOST
研究了很久样例三还以为读错题了。
第一反应是线段树分治,好像很对。做完了,单 log。
另外这东西本质是计数背包是可以通过矩阵求逆+线性求逆元做到 \(O(n+q)c\) 的。
至于中间想优化的时候冒出来一个 ddp 的想法感觉很难评。
[COCI 2015/2016 #1] UZASTOPNI
一开始以为只要选的连通块满足条件就行了,然后做到怀疑人生,想着 NOIP 考这种东西我不是炸了吗,仔细一看读错题了。
然后想了一下感觉像 ds 优化 dp,发现手玩样例不对,仔细一看又读错题了,本质不同是集合不同。
然后好像很简单,考虑以 \(u\) 为根的答案,记录 \([L,R]\) 表示 \([L,R]\) 合法,可以以 \(a_u\) 为分界线合并子树信息然后 bitset 优化做到 \(O(\frac{nc^2}{w})\)。通过压缩状态可以做到 \(O(\frac{nc}{w})\)。
[COCI 2013/2014 #1] SLASTIČAR
设第一次匹配的位置为 \(p\),则答案为 \(p-1+\sum\limits_{i=1}^p \operatorname{lcp}(i,p)\)。特别地,没有匹配则将短序列号接在长序列号后面,令 \(p=n+1\)。
这是经典问题,SAM+数据结构维护即可。
[COCI 2019/2020 #3] Drvca
感觉像是减少状态数的典范?
一个自然的想法是枚举与最小值在同一个等差数列的次小值,可以做到 \(O(n^3)\)。
此时需要一个观察:根据鸽巢原理,前三小中必有两个数被分到一个等差数列内。可以枚举这两个,然后拿数据结构维护剩下的部分。
[COCI 2019/2020 #1] Trobojnica
我咋这么菜。
考虑一个赢的必要条件是所有边权的异或和为 \(0\),因为每个三角形的异或和为 \(0\)。还有一个必要条件是不能全部相同,这两个条件加起来就充分了,因为已经可以给出构造方法。
现在要做的相当于将两条相邻的边缩成它们的异或,只要保证过程中不出现全部相同即可。
[COCI 2015/2016 #3] NEKAMELEONI
这是啥。
先考虑离线,是经典问题,固定右端点找每个颜色最后一次出现的最小值即可。
做法一,带修改第一反应线段树分治。
做法二,由于一个区间本质不同的前后缀只有 \(O(k)\) 个,可以线段树做到 \(O(nk\log n)\)。
做法三,考虑强制让最开始的离线算法带修,单侧递归线段树。
11.25
模拟赛保持清醒还不如让我滚回去考月考。
T2 读错题了到 11:00 才发现,T4 tzy/lzm 昨天晚上做过,为什么要说出来让我知道。\(100+0+0+90=190\),至于怎么来的,我已经想好了怎么编。开场 T1 5min 不会,T2 按读错的题意写了代码,过不了大样例。T3 没仔细看,因为看 T4 去了。T4 序列版本是简单的,而环上会导致距离无法拆贡献来计算费用。考虑爆搜环的一半,就可以对另一半状压。令 \(k=\lceil\frac{n}{2}\rceil\),复杂度 \(O(\frac{n!2^kk}{k!})\),卡常+剪枝应该可以卡过 \(n\leq 13\) 的点,有 60pts。考虑牺牲正确性换时间,把 \(k\) 开大,开到时限差不多的地步,这样距离算出来可能不对,但是特殊性质是稳过的,有 70pts。这时又想到一个特别厉害的做法,就是赌存在最优解满足将其砍半之后,其中的一半满足局部最优解,这样就可以把排列数变成组合数,时间可以接受。但是感觉性价比不高,加上脑子比较晕,就睡觉去了。醒来发现这个东西好像做不了计数所以就放弃了,清醒之后 T1 10min 就会了,代码写了 5min。接着毛估估会了 T3,因为 T2 先前写了若干个假算所以决定先搞 T2,结果搞到只剩 20min 还是没分,最后冲 T3 也没分。赛后发现 T4 冲了 90pts,因为没有多测,不知道为什么造数据造很水,应该是为了让计数的答案大一点,但是这样子最优性剪枝的效果就会很显著。
[COCI 2019/2020 #4] Klasika
令点 \(u\) 到根路径上的异或为 \(d_u\),则相当于查询子树内对一个数的异或最大值。启发式合并 Trie 即可。
[COCI 2020/2021 #4] Janjetina
点分治,容易将限制刻画为二维偏序的形式。
[COCI 2018/2019 #1] Teoretičar
对于二的幂次的限制,可以想到分治构造。主要问题:将一个二分图划分为两个子图,使得两个子图的答案尽可能接近。
需要注意到答案不小于最大度数。于是问题转变为让一个点在两个子图中的度数尽可能接近,是欧拉回路经典问题。
[COCI 2018/2019 #3] Sajam
观察数据范围,\(K\leq N\) 还有 \(K<\dfrac{N}{2}\) 的特殊性质很醒目。但是 \(K<\dfrac{N}{2}\) 着实想不出来咋做。考虑 \(K=N\),要么前两个操作后每行都有一个开着的,要么一定存在一行全部关着。那么可以枚举其中的一行状态,剩下的部分是确定的,可以 bitset 优化做到 \(O(\frac{n^3}{w})\)。对于 \(K<N\) 的情况是一样的。
[COCI 2018/2019 #3] Praktični
权值并查集维护两点之间的异或和,加入一条边时如果不合法就产生一个限制 \((e,w)\),表示要将边 \(e\) 异或上 \(w\)。
题目要求操作次数最小,那么把这些限制对应的值塞进线性基即可。
[COCI 2011/2012 #3] TRAKA
形如 \(\max_y f(x)F(y)+g(x)G(y)\) 的东西是可以斜率优化的。
推式子的时候记得带脑子。
[COCI 2013/2014 #2] PALETA
限制形成了基环树森林。环上的点是经典的,可以 dp 或者推式子。树上的点每个有 \(k-1\) 的贡献。
[COCI 2013/2014 #2] LINIJE
对于一个点 \((x_i,y_i)\),相当于使得让 \(x=x_i\) 与 \(y=y_i\) 可以相邻。可以抽象成二分图博弈,先手可以任选起点,则先手必胜充要条件为不存在完美匹配。
[COCI 2012/2013 #3] HERKABE
建出 Trie,则要求子树内的字符串必须相邻,于是答案是 \(\prod s_i!\),\(s_i\) 是儿子个数。
[COCI 2016/2017 #6] Sirni
有点经典。
对于一个点 \(i\),考虑与其相连的边,对于相同的 \(\lfloor\dfrac{P_j}{P_i}\rfloor\),有效的 \(j\) 是 \(P_j\) 最小的那个。这样边数是 \(O(V\ln V)\) 级别,实际上由于 \(N\) 的限制会小很多。
[COCI 2014/2015 #7] POLICE
考虑特殊性质,这是经典问题,答案为总数减去 LIS。
接着考虑一本书要换到另一个书架上,从当前的书架向要去的书架连边,这是欧拉回路经典问题,答案是加入尽可能少的边后存在欧拉回路。
11.26
信心赛。second to last dance.
T1 曼哈顿距离转切比雪夫距离,或者因为是求 \(\max\) 直接拆绝对值就可以。T2 简单题。T3 \(n\leq 22\),什么东西。手玩性质得到 \(O(3^n)\) 做法,这东西不弱于集合幂级数 \(\exp\) 的,\(O(2^nn^2)\),真的吗。T4 简单题,但是只会双 log,斜二倍增可以做到单老哥,有点好笑。想了下 T3 写了个常数极小的 dp,大样例 0.5s,太对了。剩了 90min 研究 T3 集幂做法,感觉很魔怔。
11.27
[COCI 2015/2016 #7] Prokletnik
先只考虑最大值在右端点的情况。一个点作为右端点的时候,考虑合法的左端点,是后缀最小值。那么有一个暴力做法:离线扫描,维护单调递增栈,加入一个右端点时暴力更新左端点的答案。考虑到树状数组都能支持这种操作,可以用线段树维护合法的左端点进行更新。如果一个点不再是前缀最大值,将其标记为不合法即可,线段树需要维护区间最小合法左端点。
[COCI 2012/2013 #2] INFORMACIJE
直接去想怎么构造没有前途。考虑是一个排列,以下标为左部点,值为右部点,有边当且仅当该下标可以填该值,跑二分图最大匹配即可。
11.28
早上又很困啊。听了 1h 术曲就不困了√
尝试解决昨天的遗留问题(Gym102056E Immortal … Universe)。题解:
此外有高妙的映射然后直接 dp 的做法。
不是很懂啊。感觉我之前想的映射根本不可做。不过顺带补一手 CF1810G。
不是有点吓人啊加工生产调度我怎么没过()()()
[COCI 2022/2023 #5] Slastičarnica
明天就 NOIP 了我在干什么。
考虑 \(q\) 的范围是诈骗,实际上与 \(n\) 同阶。有 \(dp_{i,l,r}\) 表示前 \(i\) 次操作剩下 \([l,r]\) 是否可行。优化由于有单调性,考虑 \(dp_{i,l}\) 表示 \(r\) 的最大值,转移可以做到 \(O(1)\)。
[COCI 2023/2024 #1] Kocke
直接形式化判定没有前途。这类覆盖问题考虑时光倒流,这样可以不用管之前填了什么。
有一个观察是从始至终非 \(0\) 的位置形成一个区间,那么有 \(dp_{i,j,k}\) 表示区间长度为 \(i\) 考虑了 \(j\) 个数,第 \(j\) 个数填在 \(k\) 上的序列方案数。优化考虑只记录关键断点 dp,就是 \(k=1/i\) 的时候。可以得到 \(dp_{i,j}\) 表示区间长度为 \(i\) 考虑了 \(j\) 个数,当前走到了边界上的方案数。转移时虽然可能在中间反复横跳,但是可以统一映射到在边界跳。
[COCI 2023/2024 #2] Dizalo
考虑暴力,如果一个人后面有 \(a\) 比他小的,轮到他时一定能够第一个下去,不会产生贡献。否则会产生以其结尾的逆序对的贡献。
每个人能够产生的贡献类似于动态逆序对,容易维护,而能否产生贡献取决于后面比他小的离开时间最大值。
[COTS 2019] 疏散 Sklonište
首先二分答案转判定,可以预处理每个关键点的单源最短路,变成二分图匹配问题。由于 \(k\) 很小,可以枚举关键点集合套用 Hall 定理。
QOJ7588 Monster Hunter
考虑没有树的限制怎么做。考虑邻项交换,两个 \((a_1,b_1),(a_2,b_2)\) 可以合并成 \((a_1+\max(0,a_2-b_1),b_2+\max(0, b_1-a_2))\)。进行一大坨分讨之后可以得到贪心策略。然后在树上用类似 [Ynoi2006] spxmcq 的做法堆+并查集维护即可。
11.29
11.30
抓紧在 whk 补课开始前多颓一会儿。

浙公网安备 33010602011771号