AtCoder Beginner Contest 182
D Wandering
Description
Solution
设当前是第 次行动,第 次行动后完成后位置为 , 那么第 次行动中能抵达的最大位置是 ,因此记录前缀和和前缀最大值即可。时间复杂度 。
Code
1 |
|
E Akari
Description
Solution
对于 个 ,如果仅向四个方向搜索,直到遇到边界或 为止,最后统计被照亮的区域,那么由于每次最多访问 个格子,时间复杂度为 。
上述操作过程中 之间的区域会被访问多次。如果搜索时遇到其它 即停止,两个 之间的区域只会被访问 2 次。时间复杂度 。
Code
1 |
|
F Valid payments
Description
Solution
首先,由于收付款过程中使用货币种类最少,因此任意金额都可以通过尽可能先支付面值大的货币来唯一表示。同时,对于货币 , 有 ,否则产生进位,用 1 个 面值的货币比用 个 面值的货币更优。
题目问付款的方案数,等价于求找零的方案数。将 按上述方法唯一分解后,设第 种货币用了 个,同时第 种货币使用次数得上限为 。由于找零和支付不能使用同一种货币,因此对于某一种货币 , 要么不找,要么找 ()个产生进位将这种货币消去使得支付时不会用这种货币。于是,容易想到设 表示在第 到第 位中至少选了 1 位,第 位没有得到来自上一位 (第 位) 进位的方案数, 表示获得了上一位进位的方案数。接下来分三种情况讨论:
-
: 如果上一位没有进位,此时一定不选第 位,下一位也不会有进位,有 ; 否则,有三种选择:
- 不选第 位,下一位不产生进位,有 种方案。
- 只选第 位,有 1 种方案。
- 选了第 位,下一位产生进位,在第 到 位至少选一位,有 种方案。
-
:若上一位产生进位,则这一位直接被消去,在下一位产生进位,此时有 。否则,有三种选择:
- 不选第 位,有 种方案。
- 只选第 位,有 1 种方案。
- 选了第 位,下一位产生进位,在第 到 位至少选一位,有 种方案。
-
:不论上一位有没有进位,都有三种选择:
- 不选第 位,有 种方案。
- 只选第 位,有 1 种方案。
- 选了第 位,下一位产生进位,在第 到 位至少选一位,有 种方案。
最后答案为 ,即至少选一位加上直接支付 元不找零的方案数。时间复杂度 。
Code
1 |
|