AtCoder Beginner Contest 190

这场的 E 题比 F 题的难度大 hh~。

我的 AC 代码:

https://atcoder.jp/contests/abc190/submissions?f.Task=&f.LanguageName=&f.Status=AC&f.User=HinanawiTenshi

A

如果 \(c=1\) 不妨交换先手,让第一个人糖果数 \(+1\) 减少情况。

B

按题意模拟即可。

C

范围很小,直接二进制枚举更新答案。

D

设一组满足的区间为 \([l, r]\),那么有

\[\frac{(l+r)(r-l+1)}{2} = N \]

那么枚举 \(2N\) 的约数即可,复杂度 \(O(\sqrt N)\)(注意到不可能出现 \(l+r= r-l + 1\) 的情况,不特判也行)。

E

首先因为关键点很少,所以可以用 \(bfs\) 处理出关键点之间的最短路 \(dis[u][v]\)

然后考虑 \(dp\)\(f[u][st]\) 表示 \(K\) 个点当前在 \(u\) 点,已经覆盖过的二进制状态为 \(st\),进行转移即可。

注意记忆化搜索比较慢,可能会超时(亲测,挂了一发),建议采取递推写法。

F

初始序列 \(b=a\),因为每次都相当于将序列 \(b\) 的首元素丢到最后,可以发现它对逆序对数的影响就是加上比它大的数的个数,减去比它小的元素个数。

那么我们一开始计算出序列的逆序对数 \(res\),然后依次更新即可。

posted @ 2022-04-15 17:36  HinanawiTenshi  阅读(29)  评论(0编辑  收藏  举报