随笔分类 -  AtCoder

摘要:D - Factorial and Multiple 对 $k$ 进行质因数分解。 如果 $k$ 最大的质因子 $p$ 满足 $p * p > k$ ,那么答案就是 $p$。因为一定要包含一次,也只需要包含一次。 否则直接爆搜。 AC代码 // #define MULTIPLE_TASK #incl 阅读全文
posted @ 2022-12-04 20:00 _Backl1ght 阅读(163) 评论(0) 推荐(1) 编辑
摘要:咕咕咕。 D - Freefall 三分求极值,注意下标得是整数,所以最后再搜索三分结果附近的整数。 直接求导应该也可以。 AC代码 // #define MULTIPLE_TASK #include "hira/main.cpp" void Initialize() {} void SolveCa 阅读全文
posted @ 2022-11-27 15:49 _Backl1ght 阅读(172) 评论(0) 推荐(1) 编辑
摘要:咕咕咕。 D - All Assign Point Add 把数拆分成 $base + delta$ 。 $base$ 就是操作一设置的数,初始时认为 $base = 0$;$delta$ 的维护可以有两种方法。 一种是我比赛时的做法,类似树状数组的时间戳优化额外维护一个时间戳,时间戳对不上就先清空 阅读全文
posted @ 2022-11-19 23:41 _Backl1ght 阅读(88) 评论(0) 推荐(1) 编辑
摘要:ABC略。 D. Make It Round 问题可以看成凑出尽可能多的 $10$ 作为因子。 注意到 $10$ 的因子只有 $1, 2, 5, 10$。 首先,$n$ 自己已经凑出来的 $10$ 没必要拆开,并不会更优。 然后就是看 $n$ 有多少个多余的 $2$ 或者 $5$,然后 $k$ 先尽 阅读全文
posted @ 2022-11-19 01:42 _Backl1ght 阅读(172) 评论(0) 推荐(0) 编辑
摘要:E - Crystal Switches 经典分层图。 搞两层图,一层对应初始状态,一层对应开了奇数次开关后的状态;假设点 $v$ 处有开关,就在两层图中 $v$ 对应的点间连一条边。 然后就是最短路板子了。 F - Sorting a Matrix $0$ 可以变成任何数,所以可以忽略。 观察:不 阅读全文
posted @ 2022-11-14 22:07 _Backl1ght 阅读(117) 评论(0) 推荐(3) 编辑
摘要:咕咕咕咕。 E - Round Trip 如果存在某个点双满足这个点双包含起点且点双大小大于 $4$ 则有解。 F - Double Chance 考虑不断在之前的基础上在末尾添加一个数,每次更新期望。 假设此前已经有 $i - 1$ 个数了,期望为 $E$ ,新添加的数为 $a_i$ 。 在 $i 阅读全文
posted @ 2022-11-06 02:13 _Backl1ght 阅读(115) 评论(0) 推荐(1) 编辑
摘要:咕咕咕咕咕咕。 G - Infinite Knapsack 做法1 - 二分 假设第 $i$ 个物品选了 $x_i$ 个,$x_i$为非负整数,有 $$ \lim_{x \to +\infin} \frac{f(x)}{x} = \frac{\sum_i c_i x_i}{\max(\sum_i a 阅读全文
posted @ 2022-10-30 01:18 _Backl1ght 阅读(130) 评论(0) 推荐(2) 编辑
摘要:E - Booster TSP问题变种,典中典。 AC代码 // Problem: E - Booster // Contest: AtCoder - キーエンスプログラミングコンテスト2022(AtCoder Beginner // Contest 274) URL: https://atcode 阅读全文
posted @ 2022-10-23 00:16 _Backl1ght 阅读(157) 评论(0) 推荐(1) 编辑
摘要:F. Multi-Colored Segments 观察: 如果某个位置上有大于等于两种不同的颜色,这个位置就可以更新任何颜色的线段的答案。 基于观察就可以通过模拟来解决问题了。 大概就是先离散话的处理一下,跑出每个位置上不同颜色的数量,以及如果这个位置上只有一种颜色,这个颜色是什么。 然后对于每个 阅读全文
posted @ 2022-10-13 00:14 _Backl1ght 阅读(99) 评论(0) 推荐(0) 编辑
摘要:E - Add and Mex 每个 $a_i$ 只有在 $0 \le a_i + k i \le n$ 时才会有贡献,即对于 $i$ 只有 $O(\frac{n}{i})$ 个操作是有效的。所以需要考虑的只有 $O(n\log n)$ 个 $a_i + ki$。 借助小顶堆从小到大枚举 $a_i 阅读全文
posted @ 2022-10-08 22:11 _Backl1ght 阅读(181) 评论(1) 推荐(2) 编辑
摘要:咕咕咕咕。 E - Subsequence Path 最短路问题变种, Dijkstra 最短路改改就行了。 AC代码 // Problem: E - Subsequence Path // Contest: AtCoder - KYOCERA Programming Contest 2022(At 阅读全文
posted @ 2022-10-07 16:37 _Backl1ght 阅读(143) 评论(0) 推荐(4) 编辑
摘要:咕咕咕。 D - Stones 冲了发贪心,然后 WA 。 然后想了个 DP,就令 $dp_{n, 0/1}$ 表示石头总数为 $n$ 时,先手/后手最多能拿多少个石头,然后跑个 $O(nk)$ 的DP就完事了。 AC代码 // Problem: D - Stones // Contest: AtC 阅读全文
posted @ 2022-09-24 23:15 _Backl1ght 阅读(479) 评论(0) 推荐(2) 编辑
摘要:E - Chinese Restaurant (Three-Star Version) 假设旋转 $x$ 次时, $n$ 个人失望值的总和为 $c_x$,那么只要能求出 $c_x, 0 \le x < n$ 就可以包含所有情况,然后再取最小值即可。 对于第 $0$ 个人,假设 $p_0 = 0$,第 阅读全文
posted @ 2022-09-18 12:03 _Backl1ght 阅读(204) 评论(0) 推荐(1) 编辑
摘要:咕咕咕咕咕。 F - Numbered Checker 首先矩形容斥,把一个询问拆分成 4 个询问。现在只需要解决:左上角为$(1, 1)$,右下角为 $(x, y)$ 的矩形区域和这一问题。 把列数为奇数和偶数的分开算,以奇数为例,偶数列同理可得。 第 1 列的上的非零元素可以组成一个首项元素为 阅读全文
posted @ 2022-09-18 01:27 _Backl1ght 阅读(291) 评论(1) 推荐(2) 编辑
摘要:E - Warp 注意到 $N$ 相比 $M$ 要小得多。 考虑 DP, 令 $dp_{i, j, k}$ 表示一共使用了 $i + j + k$ 次操作,且每种操作的使用次数分别为 $i, j, k$ 的方案数,然后用 std::set 容器快速判断能否转移到下一个状态(下一个点上是否有障碍物), 阅读全文
posted @ 2022-09-06 13:02 _Backl1ght 阅读(155) 评论(0) 推荐(1) 编辑
摘要:E - Erasing Vertices 2 做法1 观察可得:对于某个时刻,贪心删当前代价最小的点肯定是最优的。 但是删一个点会减少相邻接的点的代价。然后就想到了堆,但是这个堆需要支持decrease-key操作。 decrease-key 这个操作std::priority_queue并不支持, 阅读全文
posted @ 2022-09-04 01:38 _Backl1ght 阅读(197) 评论(0) 推荐(1) 编辑
摘要:咕咕咕咕。 E - Throwing the Die 注意到如果对当前的结果不满意然后重开的话,后面的结果和当前结果是没有关系的。 假设已经算出了有 $n$ 次机会时的期望得分 $E_n$。 那么还剩 $n + 1$ 次机会的时候,摇了一次结果为 $X$,还剩下 $n$ 次机会。如果 $E_n > 阅读全文
posted @ 2022-08-27 21:58 _Backl1ght 阅读(216) 评论(4) 推荐(3) 编辑