「Log」2023.11.30 小记
序幕
\(\text{6:40}\):准时到校,整博客。
今天没带吃的,点份早饭吃。
今天依然是杂题日,随机刷杂题。
想了一会一点思路没有,看看标签,发现有个向量。
不对劲,果断点开题解,果然是神秘题。
边看边吃早饭,吃完了还是没看懂。
突然昏迷。
\(\text{9:10}\):苏醒,继续看题解。
突然继续昏迷。
\(\text{11:00}\):苏醒。
冬天真的太想睡觉了……
去上了个体育课精神精神。
冻得脸麻了,赶紧回机房午休。
上午约等于没学习,给我抓紧啊喂!
\(\text{13:30}\):开始继续看题解。
\(\color{blueviolet}{CF10E}\)
不得不说这题太神秘了。
考虑贪心什么时候是错误的。假设贪心会选择 \(a_i\),然后选择 \(a_j\),存在一种更优情况一定是选择两者之间的某一个值进行拼凑,然后枚举 \(i, j\) 尽量小的构造即可。
证明过程很神秘,略了。
间幕 \(1\)
接着开题,读完题感觉是个状压,但感觉转移是很神秘的,没啥思路果断看题解。
预处理一群一群的转移就可以了,确实有点神秘。
\(\color{blueviolet}{CF543C}\)
状压是显著的,设 \(f_i\) 表示达到状态 \(i\) 时的最小花费,其中状态表示每一个字符串是否存在一位不同。
考虑对于一个 \(f_i\) 进行向下转移,找到第一个不合法字符串 \(now\),有两种转移方式,第一种是改这个字符串使得其合法,第二种是改一群某位相同的字符串,使得这一群字符串合法。
第一种转移是显然的,第二种考虑预处理一个 \(g_{i, j}\) 表示将第 \(j\) 位与第 \(i\) 个字符串相等的一群字符串都改合法的方案,显然是不改花费最大的那个,预处理是简单的。
间幕 \(2\)
点杯饮料,小摆一会,换了套壁纸。
接着开题。
先转化了下题意,然后感觉套个二分就行了。
\(\color{blueviolet}{CF555B}\)
题意转化为给定一些点和区间,一个点可以覆盖至多一个它所在的区间,每个区间至少被一个点覆盖,问是否有覆盖方案。
把区间按照右端点排序,然后在 set 里二分合法最靠左点来覆盖区间,找不到就是无解。
间幕 \(3\)
吃完晚饭又开始昏迷。
十九点苏醒。
随机开题写一写。
\(\color{blueviolet}{CF442C}\)
首先有一个显著的结论,如果一个数两边都比它大,那么删去这个数是最优的,于是可以用单调栈维护第一步。
删完之后得到一个单峰序列,最优方案经过手玩可以得出是取最大次大外的所有的贡献,这两个数永远取不到。
间幕 \(4\)
开摆了,随机游走。
老师推荐了一道数位 DP,非常的反套路。
小颓,然后速通了这个数位 DP。
\(\color{blueviolet}{CF833C}\)
没法前缀作差,考虑其他做法。
发现了不同的数的个数一共不多,所以可以枚举所有数并进行判断是否在区间内。
间幕 CF 1903
回家睡觉,然后起床打阴间场 CF,Zpair 上来把 D1 秒了,从高位向低位算贡献即可。
A 题没啥水平,B 题有点水平,考虑把所有一个数的或和都与起来,假设当前数字就是这个,最后验证一下。
我也不知道为啥是对的,但是就是对的。
C 题最开始还以为斜率优化,原来是式子错了。
考虑做个后缀和,每次操作相当于选择一个后缀和加入贡献,特殊地,第一项必须加入贡献,然后能加正的就加就完事了。
D2 和 E 有点思路,但不多,三点下播。
尾声
睡大觉。