Codeforces 1456

题目传送门:Codeforces 1456

B XOR-gun

首先考虑暴力(竟然没想到异或前缀和),由于最终一定是由相邻的两段变成这两段的异或和并且后一段小于前一段,所以就得到了\(\mathcal O(n^3)\)的枚举做法。
考虑分析一些显然的性质:记\(d_i\)表示第\(i\)个数字二进制位的最高位,如果存在连续3个\(d_i\)相同,则将后两个异或起来一定小于第一个,输出\(1\)即可。
由上述性质,最后不满足条件的一组数一定不会超过\(2\log_210^9\),大约是\(60\),所以只需特判掉满足性质的情况,剩下的暴力即可,复杂度\(\mathcal O(n+60^3)\)
Submission

C New Game Plus!

原题转化为,分成\(k+1\)个集合,每个集合元素从大到小依次乘上其是第几小,显然一个优先队列就可以解决。
写在这里只是为了提醒自己,这么简单的贪心不应该想不出来!
Submission

D Cakes for Clones

很神的\(DP\)题!
\(g_i\)表示到达\(x_i\),并且前\(i-1\)个都收集到的最小时间。记\(f_{i,j}\)表示自己到了\(x_i\)克隆在\(x_j\)等待,且前\(i-1\)个都收集到的状态是否可达。对这两个数组一起转移。
转移就是分类讨论,但要注意要把所有\(i\)的状态都转移到\(i+1\)\(i+2\)上,不能由遗漏,具体转移方程见代码,并不难理解。
Submission

E XOR-ranges

暂时留坑
Submission

posted @ 2021-09-22 22:58  徐骁远  阅读(68)  评论(0)    收藏  举报