CF1984 记录
吐槽
真跟上次说的一样打一场掉一场了,最近 CF+AT 加起来打了四场全部掉一车,我都不知道到底是我晚上状态很差还是纯菜,就比如这场 D 写了一车分讨最后还是挂细节,B 编了个离谱做法但是漏了一堆 case,本来以为也是细节问题今天一看还是假。
不过就算这次比赛状态好可能还是只能到 E,我应该还是编不出 F 和 G 的细节,细节细节还是细节,代码不够简洁,编了一车错误细节,到底应该写点啥提升呢,如果有看到的同学能否给点建议/kel。
还有就是我发现我思维路径非常古怪,总是往一些比较神秘的古怪的路径去想,没能马上抓住一些简洁的特征和性质,这可能还是训少了的问题,总之还是要多做一点分讨或者一些观察性质的题目,不仅是要找到这个性质,如何运用也很重要。
CF1984A
定义一个数组的权值为最大值减去最小值,问你能否将给定的数组划分为非空的两部分,并使得两部分权值不同,要求构造方案。\(n > 2\)。
首先这个要求构造不同的题目,你肯定先想构造一些极值然后另一边自然取不到这个最大值,这个思路在种类数大于等于 3 的时候肯定可行,由于 \(n>2\),所以在种类数为 2 的时候你让一边颜色全相等就行,种类只有一种显然不行。
CF1984B
定义好数为所有数位上的数都大于等于 5 的数,多次问你一个数能不能被表示成两个数位相同的好数的和。\(10 \leq x \leq 10^{18}\)。
现在看来感觉是个很恐怖的题,因为我一开始的思路与正确思路非常不一样,感觉要立马想到应该这么思考很困难,但是这只是个 B。
遇到这个题有几种思考方法,我赛时想的是先构造极值,看是否在 \(555+555\) 和 \(999+999\) 这种区间内然后再特判一些不能被表达的数,但是这样会有一些碰到 0 的时候不合法的问题,并且这种情况还不是那么好判断,怎么办呢?
构造不行那就观察性质找冲要类似的东西,性质从定义本身出发,你发现末位 9 一定不行,然后末位必然产生进位,于是就抛弃最后一位继续看,有前面传递的 1,因此这次变成了是 0 一定不行,到最后则是 1 不行,于是简单的判断就可以完成。
还是要多想,多想一步有没有假,多想一下有没有更简单的实现方式。
CF1984C
给定一个数组 \(a\),初始时 \(c=0\),每次要么 \(c \leftarrow c+a_i\) 要么 \(c \leftarrow |c+a_i|\),C1 求 \(c\) 最大值,C2 求 \(c\) 转移到最大值的方案数。
感觉比 B 简单,这个思考过程比较平凡。考虑朴素转移,不难发现最大值要么从上一次最大值转移过来要么从最小值转移过来,最小值同理,因此你只要维护最大值和最小值的方案数和权即可。
CF1984D
给定一个字符串,问有多少个该字符串的子串使得原串可以被划分为若干个字符串满足它们要么是这个子串,要么是 \(\text{a}\)。
赛时一直在编 KMP 然后分讨分讨分讨,但是其实我后面已经发现了所有必要结论,还在那里乱搞,蚌埠住了,感觉放早上我都不屑于写(说大话中)。
考察这个字符串应该是什么样,分为是不是全都是 \(\text{a}\) 讨论,前者是平凡的,后者你就考虑非 \(a\) 部分要么是所有串的周期要么是这个东西加 \(\text{a}\) 要么是若干串拼在一起,然后分讨?不,其实你发现非 \(a\) 部分只有 \(n\) 因子种,完全可以暴力枚举。
带 \(a\) 怎么办,你发现你需要算一个类似 \([x^P]\frac{x^{L+1}-1}{x-1}\frac{x^{R+1}-1}{x-1}\) 这样的东西,很麻烦?不,暴力能过,考察每个 \(P\) 贡献次数,这也是类似调和数的东西,总之能过,这个题就很离谱。
CF1984E
给定一棵树,你需要最大化点分树儿子,求这个最大值。
这个题一眼树 dp,但是状态设计是困难的,怎么办呢?
还是想性质,想想儿子在原树上的可能分布形态,发现是最大独立集,dp 就做完了吗?
不,你发现如果根是叶子那它剖下来那层也可以是叶子,且你发现把叶子当作根一定最优,于是你要算去掉一个叶子之后的最大独立集,这个容易,然后真的做完了。
CF1984F
给定序列 \(b_n\),问你有多少种把给定字符串的 \(\text{?}\) 替换成 \(\text{P}\) 和 \(\text{S}\) 的方式使得存在一个数列 \(a_n\) 满足 \(|a_i| \leq m\) 且如果该位置是 \(\text{S}\) 那么就是 \(a\) 的前缀和,否则后缀和。
考察一些样例可以发现你总能规约到 \(\text{PSPSPSPSPS}\) 这种交替出现的形式,若不然则可以把中间连续的去掉。
然后你考虑对这样的限制计数,直接做不太行,dp 的时候会受到前面选择的限制,肯定要做一些等价转化,你发现 \(\text{PS}\) 连着其实代表整个 \(a\) 的和应该是多少,而固定和做 \(n^2\) 化解限制可以接受,于是你钦定和,然后根据和 dp,这是容易的。
CF1984G
给定排列 \(p\),让你求一个最大的 \(k\) 使得你只做将中间连续 \(k\) 个数移动这样的操作就能将排列排序,需要输出方案。
一个关键点在于你发现 \(k=n-2\) 很强,考虑看看能不能做交换,发现特定情况可以,然后分讨分讨就做完了,咋没啥说的。
具体情况在于你先按照 2 个 2 个循环移位,把要交换的放到前后,然后再换一下就能保持循环移位特点不变,就做完了。
代码偷懒就没补。