20241020模拟赛学长讲话

Oct 20 唠嗑环节

关于今天模拟赛我有点事想和大家闲扯一下,我不在线下,就在线上跟你们聊一聊

没有找到很多 CNOI-styled tasks 导致这场的 A B C 风格很诡异,原版模拟赛有稍微偏 CNOI 一点的 B 和 C,但是很难,就换掉了

\(n^3\) 冲了 D 题 \(25\) 分有点混乱邪恶,不过不加强数据范围感觉不好卡否则容易杀掉带 set 的 \(n^2\log\),而且和 \(n^2\) 没啥本质差别,就这样吧

比赛难度我想对标 CSP-S 2024 让大家体验一下 CCF 的 sb,但是好像这场 A 和 B 比 CSP-S 2024 要难一些

B 和 C 的通过人数比较多,所以我把原题放出来:

Petrozavodsk Winter 2020. Day 3. 300iq Contest 3 F - Farm of Monsters

CodeForces 1854 B - Earn or Unlock

在下面讨论一下一些题的做法,并且聊一聊我最新的关于算法理论的一些想法

如果想不明白下面对某题的描述的话不要硬想,会扰乱思维,可以攒一段时间后再看,这时候就明白题解中的一些注意到和不难发现不是凭空想象出来的,背后有成体系的的解题逻辑来作为支架

叠加:下面关于算法理论的结论只是我做题时使用的工具,只在部分情况下有效,均没有经过严格论证,不保证不虚假

关于像 A 一样的操作题,充要条件是针对整个解集通用的,所以假如执行某个操作后,序列的一些性质不会改变,则该性质可能成为充要条件的一部分

所以我之前天天给你们说操作题找不变量可能有奇效,这是思维技巧背后的原理

本题中操作是可乱序的,可以先执行所有操作 1 后执行所有操作 2

操作 2 保证了操作先后序列所有元素\(\bmod r\) 不变,所以一个合法序列必然经过若干次操作 1 后所有元素变为 \(r\) 的倍数

这时候可以直接去观察合法序列的这些操作 1 长啥样,就导出本题的做法

B 题假如有一个神人告诉你最优方案中你拿到了 \(S_1\) 中的人头或 \(S_2\) 中的人头,该问题弱于原问题,对该问题进行思考有可能得出有助于解决原问题的性质

问题转化成了如何检查你能否拿到 \(S_1\) 集合中的人头,容易得出充要条件

分析该过程,进行反悔贪心求解最优的 \(S\) 即可,也可以 dp,dp 维护 dp 值函数斜率(slope trick)和反悔贪心代码完全相同

关于 D 题的做法分析是弱化归约问题的经典运用,下面我将论证该题的任何做法都显式 / 隐式地维护了极短的 \(\text{mex}\) 区间:

对于某区间 \([l,r]\),令 \(b_i\)\(\text{mex}=i\) 的区间的最短长度,此时 \(b\) 单调不降。

若任选 \(b_i\) 将其自增 \(1\),则令 \(k\) 为原来的 \(b_i\),此时答案变化,求出的不是最优解

所以对于所有 \([l,r]\) 都必须维护所有 \(b_i\) 的准确值,此时相当于维护了极短的 \(\text{mex}\) 区间,得证

此时就可以直接观察极短的 \(\text{mex}\) 区间有什么性质了

剩下的东西和 NOIP 2024 D 有异曲同工之妙,具体在于我们统计的区间只有两个指标而非普通三维偏序的三个,所以可以把区间看成二维平面上的点,二维偏序问题可以统计两条直线叉出的一个子平面中点的信息,该题中要统计的区域可以被划分成两个子平面的无交并,从而转化成二维偏序问题,得到解决

就说这么多吧,有疑问可以找我交流

posted @ 2025-10-20 14:39  Yun_Mo_s5_013  阅读(7)  评论(0)    收藏  举报