Good Bye 2020 题解(A-G)
昨天前6题全靠手速,G题漏写了一行代码最后也没有rush出来。😢
A
枚举底边就ok。
B
从后往前greedy,如果+1的话可以让答案+1就+1,不然不变。我一开始还卡了半天在想为啥是对的。。。
C
问题就是要满足:
∀
i
,
s
i
≠
s
i
−
1
,
s
i
≠
s
i
−
2
\forall i,s_i\neq s_{i-1},s_i\neq s_{i-2}
∀i,si=si−1,si=si−2
直接记录每一个位置是否修改,然后dp就行了。这玩意我做的时间比E还长???!
D
问题可以变为:
a n s w e r = ∑ w i × c i answer=\sum w_i\times c_i answer=∑wi×ci, c i c_i ci表示和i相连的颜色数量。
然后搞一个priority_queue贪心就可以了。
E
比较基本,就是考虑每一位的贡献。
F
脑子里模拟一下两个位置有1然后插入线性基的过程,然后dsu随便搞搞就过了。注意:一个位置有1的比较特殊。
G
考虑枚举哪些位置是t[i]哪些是s0,这只需要跑几次z就可以了。
然后问题就转变成给你一个t’判断是否可以通过 s 0 = O̸ s0=\not O s0=O变化得到。每次奇数位和偶数位拆开来, l e n log l e n len\log len lenloglen时间复杂度就可以做到。z算法搞的时候一定要注意哪些情况需要翻转,哪些不要,我就是被这个坑了。qwq。
总时间复杂度为 O ( l e n × ∣ s 0 ∣ + l e n × log l e n ) O(len\times |s_0|+len\times \log len) O(len×∣s0∣+len×loglen)
所有代码连接:
https://codeforces.com/submissions/MrGary/contest/1466