09 2022 档案
摘要:咕咕咕。 D - Stones 冲了发贪心,然后 WA 。 然后想了个 DP,就令 $dp_{n, 0/1}$ 表示石头总数为 $n$ 时,先手/后手最多能拿多少个石头,然后跑个 $O(nk)$ 的DP就完事了。 AC代码 // Problem: D - Stones // Contest: AtC
阅读全文
摘要:A. Consecutive Sum 根据下标模 $k$ 的结果把数组分成 $k$ 类,连续的 $k$ 个数字必定种类互不相同,然后就把每一类最大的那个数求出来然后累加即可。 B. Rule of League 假设 $x < y$。 假设有 $a$ 个人赢 $x$ 场, $b$ 个人赢 $y$ 场
阅读全文
摘要:E - Chinese Restaurant (Three-Star Version) 假设旋转 $x$ 次时, $n$ 个人失望值的总和为 $c_x$,那么只要能求出 $c_x, 0 \le x < n$ 就可以包含所有情况,然后再取最小值即可。 对于第 $0$ 个人,假设 $p_0 = 0$,第
阅读全文
摘要:咕咕咕咕咕。 F - Numbered Checker 首先矩形容斥,把一个询问拆分成 4 个询问。现在只需要解决:左上角为$(1, 1)$,右下角为 $(x, y)$ 的矩形区域和这一问题。 把列数为奇数和偶数的分开算,以奇数为例,偶数列同理可得。 第 1 列的上的非零元素可以组成一个首项元素为
阅读全文
摘要:E - Warp 注意到 $N$ 相比 $M$ 要小得多。 考虑 DP, 令 $dp_{i, j, k}$ 表示一共使用了 $i + j + k$ 次操作,且每种操作的使用次数分别为 $i, j, k$ 的方案数,然后用 std::set 容器快速判断能否转移到下一个状态(下一个点上是否有障碍物),
阅读全文
摘要:E - Erasing Vertices 2 做法1 观察可得:对于某个时刻,贪心删当前代价最小的点肯定是最优的。 但是删一个点会减少相邻接的点的代价。然后就想到了堆,但是这个堆需要支持decrease-key操作。 decrease-key 这个操作std::priority_queue并不支持,
阅读全文