Codeforces Round 972 (Div. 2)
1|0A. Simple Palindrome
考虑到对于同一种字母无论怎么摆放,对答案的影响是相同的。所以我们可以直接把同一种字母放在一起,考虑不同中字母间为了消除回文串,必须是的同一种字母不会出现在另一种字母的两侧。因此我们只要尽可能的均分五种字母就好了。
2|0B1. The Strict Teacher (Easy Version)
如果学生在老师的两侧,则只有一种情况就是把学生赶到边界上。
如果学生在老师的中间,则两个老师向中间逼,而学生的策略一定是先逃到两个老师的正中间,然后等待。
3|0B2. The Strict Teacher (Hard Version)
根据B1的结论,其实我们可以考虑到,能够决定答案的就是,离学生最近的两个老师。
4|0C. Lazy Narek
因为最后是的答案是,所以实际上我们可以直接dp答案,也就是把 Narek 的得分记为正,GPT的得分记为负
然后对于单词与单词之间,我们可以用01背包求解单词是否选择。
对于单词的内部,我们如果知道了前一个单词选择到哪个字母了,那么当前单词就可以贪心的求出最优贡献。
当然了,题目有说过,对于末尾的部分,如果不完整,则无法得分,且GPT要得分,所以最后输出答案的时候,要把末尾的贡献剪掉。
5|0D. Alter the GCD
首先我们可以想到,如果枚举出了两个端点,就可以方便的计算出区间的最大公约数。
我们考虑,前缀的值的个数是不多,至多是个。
比如我们枚举,表示分为三个区间。我们考虑三个区间分别怎么求解?对于可以用前缀最大公约数,我们可以用后缀最大公约数。中间的区间怎么求?
有一种解法是根据个数不超过个,我们可以枚举左端点,然后按照的值枚举右端点,中间的值用表实现。而枚举右端点,我们可以用二分查找找到与上一个右端点第一个不同点就好。这样的话复杂度可以实现的复杂度。但是很可惜这种做法目前似乎无法通过了。
下面的解法来着 jly。
首先我们考虑枚举右段点,然后对左端点,我们统计出前缀每个值出现最靠后的位置,共个。然后我们可以计算出一个,表示的区间,这个数组的值依旧只有个,因此我们可以像统计前缀每个值出现的最靠后的位置,统计出中间区间的值出现的最靠后的位置。这样的话,如果我们要维护这个数组的代价就是的,
此时我们发现,对于当前的,其左端点可选的值有两个数组的前缀值出现的最靠后的位置,两个数组中间区间值出现的位置,一共只有个,所以直接枚举就好,复杂度是。
6|0E1. Subtangle Game (Easy Version)
我们可以用SG函数来分析这到题目,我们可以表示当应该从到选择的 SG函数,然后我们只要找到范围的并递归计算就好了。
但是如果我们直接暴力的扫描复杂度肯定是无法接受的。
注意到的范围的其实不大,我们可以统计出对于所有的值出现某一行的某一列,然后就可以枚举加二分快速的找到值的位置并转移。
然后再加一个简单的记忆化就可以通过这道题目。
7|0E2. Subtangle Game (Hard Version)
这道题目,主要是理解 jly 的代码为主。
我们做一些简单的约束,首先下标都是 0 开始,其次保证,如果不满足手动转置一下,最后,因为 1 行至多放一个,所以最多放个。
用表示坐标,用表示到右下角的这个区域。
那么如何判断的胜负状态?如果的后继为空,或者的后继全部是必败态,则是必胜态。
我们设状态,表示第个数字,在第行,给对手留下最大的选择区域是必胜的,换言之我需要最小的选择区域才能保持必胜。
因此,可以推导出,,这样的话我们如果从大到小枚举,则可以从继承过来。
那么考虑我在什么情况下,可以增大,我们贪心的选择出行中数字最后一次出现的列。如果说那么我是可以更新的。为什么?因为对于对手来说,至少需要的选择范围才能保持必胜。但是我选择了点后,留给对手的范围是,因此对手必败,所以当前这个状态是必胜的。
对于刚才的条件,我们可以转换为,这个主要是为了方便理解 jly 的代码。
因此。这里的,如果我们维护出了每个数字在每一行出现的所有位置,我就可以二分出来。
然后在我和 jly 的代码中。因此当时,我在最后一行,我没有,对手也没有,因此。
考虑答案,如果说,是先手必败,因为先手必胜需要的选择范围,而此时先手拥有的选择范围是。
然后就是刚刚说过的是从大到小枚举,因此我们只要先更新,再更新就可以优化的第一维空间。
__EOF__

本文链接:https://www.cnblogs.com/PHarr/p/18417409.html
关于博主:前OIer,SMUer
版权声明:CC BY-NC 4.0
声援博主:如果这篇文章对您有帮助,不妨给我点个赞
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律