Asia Yokohama Regional Contest 2018
Problem A
Solved by zerol. 00:33 (+)
比大小签到。
Problem B
Solved by ultmaster. 01:09 (+)
题意:从一个集合里选一些数使得构成等差数列最长。
题解:d[i][j] 表示到 i,上一个是 j,最长是多少。转移的时候在一个 map 里反查一下,就是 $O(n^2 \log n)$ 了。
Problem C
Solved by zerol. 01:39 (+1)
题意:想象一个中间过道只能容纳一人的火车,过道两边有两排座位,每个人在每个单位时间内只能移动一格,同时每一个格子内至多只能有一个人,问需要多少时间能使所有人从出口离开。
题解:计算出所有人的不考虑阻塞的离开时间。然后排序后模拟一下,保证同一个时间至多只有一个人离开,答案就是最后一个人的离开时间。
Problem D
Solved by kblack. 02:34 (+)
Problem E
Unsolved. (-2)
Problem F
Unsolved.
Problem G
Solved by kblack. 02:56 (+)
Problem H
Unsolved.
Problem I
Unsolved.
Problem J
Unsolved.
Problem K
Unsolved.
题意:田忌赛马。让你给出一种方案使得在赢得场次最多的前提下,字典序尽可能大。
题解(口胡):我们考虑逐位确定。先把当前的答案求出来(我们首先不能损失这个答案)。求答案的方法就是:把两个序列都按顺序排,对于每一匹马找尽可能小的能战胜它的。最后确定方案的时候我们考虑当前位上是要被打败还是不要被打败(就是选一个最小的可以打败它的放在上面,然后其余的再跑一遍上面的求答案的方法,看答案是否不变)。
- 如果要被打败,那么我们就二分查找最大的马可以使答案不变。
- 如果不被打败,那这一位我们已经不要了,所以显然也是马越小越好,但是字典序又要大,所以也二分查找最大的马使得后面还能不变。
复杂度是 $O(n^2 \log n)$。