Educational Codeforces Round 161 (Rated for Div. 2)

这场过了挺久了,写篇题解是因为本着补完一套写一套的原则(其实是我很懒地拖到现在才补完)。

然后值得写的也只有后三题,快速写一下吧。

D. Berserk Monsters

先预处理出来第一轮。

然后只有上一轮存在左边或者右边的怪物亖了,才有可能在这一轮亖。

每次不重复的把有可能亖的怪物放到队列里,然后拿 set 充当链表,模拟每一轮就行了。

E. Increasing Subsequences

从小到大枚举 1~x ,再枚举已安置序列的每一位 \(i\)

不难发现放到第 \(i\) 位后面可以新增 \(2^i\) 个单调上升的子序列。

所以先把要求的 \(x\) 减去 1(空序列),然后贪心放置即可。

具体的,当原子序列个数 \(now + 2^i <= x\)\(now + 2^{i+1} > x\) 时,把当前枚举的数字放到第 \(i\) 位。

不难证明,相当于前 60 发垫出去了,后面必然在 60 次内凑出来结果,一共不超过 120 次。

F. Replace on Segment

并不难的区间 dp ,但是我现在作为一个砂杯赛时必然是写不出来的。

搞两个数组一个代表 \(i\)\(j\) 不存在 \(k\) 的代价,一个代表 \(i\)\(j\) 全是 \(k\) 的代价,每次先转移前者再转移后者即可。

式子懒得写了,难度不超过绿题。

posted @ 2024-02-03 01:52  NEUQ-zyb  阅读(12)  评论(0)    收藏  举报