2025 01 做题笔记
0102
MX 省选模拟赛 Day8,\(63 + 100 + 0\),rk 5,T1 想到了几乎所有转化,还是死在了最后一步找支配对,我以为这没啥性质的。
发现 T 上了,P 呢?
-
P4482 [BJWC2018] Border 的四种求法:学习了一种很厉害的单 log border series 做法,但是太难写了,还是用 SAM 吧,我们要做的就是对 r 对应的节点找一个 \(p\) 使得 \(len_{lca} \ge p-l+1\),暴力做法是枚举 lca 然后查子树内有没有合法点,这不太行,考虑树剖,从轻子树跳上来的部分 dsu on tree 做掉,可以不用写线段树合并,剩下的就是 log 段重链前缀查,离线扫每一条重链全部做掉即可。
-
P5287 [HNOI2019] JOJO:Border series 题,把暴力跳换成跳等差数列即可,细节有点多。
-
MX_R8_B 扑克游戏:简单题,用数据结构维护下一张该谁出即可。
-
MX_R8_A 建筑游戏:暴力转移是简单的,你可以加约束变成必须取区间左右端点,然后就是相当于对于每次转移你都要找一个区间里的点最小化费用,这个东西在线肯定不好算贡献,先 cdq 分治离线掉,然后这时我们可以只考虑左边选一个右边选两个的情况,或者反过来,对于后者我们发现对于每个 \(f_i\) 只需要考虑区间里 \(a_{i+1}\) 的前驱和后继就行,否则会在算其他 \(f\) 时被算到,支配点对是很少的,直接李超树维护一下转移即可。
0103
P 也上了,但是想了很久,高二 P 拿约好像太难了,于是最后选了 T,但是晚上一看到构式工程题又开始后悔了,一看群怎么都去 P?但是其实大家要么高一要么初中啊/ll,哎,流泪了。
晚上 vp 了一场 CF div2,A-D 写完就摆烂了,看了下 E 感觉很简单,div2 是不是确实没啥训练价值?
-
nflsoj:P17546 树上染色:经典贪心,最大的一定在父亲选之后被选,然后可以合并并考虑这个连通块的平均值,简单维护一下即可。
-
nflsoj:P12945 坐飞机:写了个 7k ddp,然后数组没清空以及 \(fa\) 写成 \(x\) 调了一下午。
0106
学考结束,复活!下午 vp MX 模拟赛,过了前两题,自信++,T3 是前年福建省集原,当时场上好像没人过,遂摆烂不订了。晚上去写了一点 ucup HongKong 的题。
-
MX_R9_A divide:先考虑算贡献,对每个 \(i\) 考虑它作为分界点时合法的左右端点,你发现这个东西虽然单调,但是因为值域在变来变去所以很不好刻画,那我们在值域上考虑,你发现我们可以钦定左边 \(\max\),这样就变成了一个简单数点问题。
-
MX_R9_B music:考虑怎么判定每个字符串是否合法,此时你需要发现每个字符串对应的合法情况是唯一的,可以直接算出来然后对它哈希,于是现在的问题就变成了对于每个子串算在每个字符串里的出现次数,对主串建 SAM,每次在上面匹配字符串,然后给链上的状态对应 +1,重剖后变成前缀加 1,可以离线然后扫每条重链动态地求出每个状态对应的哈希值。
0107
写 CF 专题+ucup Hong kong,今天写了五个,应该会等全部写完专门发一篇博客。
-
P9991 [Ynoi Easy Round 2023] TEST_107:直接考虑缺某个点的时候的贡献,你发现如果此时 \(l'\neq l\) 且 \(r'\neq r\),那么可能的区间就是所有颜色中间的那部分,否则直接 set 就能统计,非常卡常,尽量少用 set 操作。
-
CF2057F Formation:考虑钦定最后变成 \(\max\) 的是哪个点,根据它最后到底需要加前面的多少个数为下标构成一个分段函数,枚举这个“要加多少个数”进行简化,然后直接二分就可以做到三只 log,发现瓶颈在于计算每个数要加 \(k\) 次时的和,对所有数整体二分可以优化掉这部分。
-
CF2057G Secret Message:神秘构造题,和昨天某个 up 的视频里看到的五子棋某个阵法非常像,按照 \((i+2j)\) 分颜色,没被覆盖到的则选周边点,简单枚举一下你会发现后者总和刚好是 \(p\),于是取出最小的一个集合即可。
0110
前两天因为甲流一直在家里躺着,还好是出发前得的。打了 nfls 的模拟赛,做了点 CF 杂题,试图补 MX 的模拟赛 T2,但是厉害单侧递归做法看不懂/ll。
-
AT_cf16_exhibition_final_e Water Distribution:先考虑最终连边的形态,不难发现一定是棵树,否则调整不劣,接着你发现其实一个连通块相当于可以均分权值,于是直接状压 dp 就做完了。
-
CF1310E Strange Function:对于 \(k \le 2\) 的点直接 dp,\(k\le 3\) 的很难分析,但是合法的数列和会变得很小,因为每次差不多给长度开了个根号,因此爆搜可过。
-
CF2057H Coffee Break:似乎不难想到,考虑对于一个点 \(i\) 来说一定是左边操作到只剩下 0 和 1 且自己不操作,右边同理,感觉一下应该无论怎么操作最后的形态都一样,于是直接从左往右推,每次一直给 \(i\) 加 1,找下规律发现这个过程大概是把最左边的 0 往右移动并把右边 +1,直接维护所有 0 的位置即可,还有些细节需要判。
-
CF2048G Kevin and Matrices:观察出小于号不可能成立真是人类智慧,也可能是我注意力过于低下了/ll,有了这个结论之后可以直接枚举相等的值,然后算至少一行全部小于等于 \(x\),至少一列全部大于等于 \(x\) 的方案数,枚举一行暴力容斥即可。
-
CF2048H Kevin and Strange Operation:一个很方便的刻画是考虑每个点在若干次操作后会等于 \([l_i,r_i]\) 的区间 \(\max\),增量式地考虑这个东西的变化,你会发现这相当于 \(r_1\) 和 \(l_i\) 去掉后按顺序重排,可以对这个过程 dp 然后数据结构维护。