ARC120 简要题解
赛时做出:ABCD,罚时 74min,E 题一看以为神仙题,然后赛后看一眼 tag 瞬间会做。。
C
发现一个数向左移就 +1,向右移就 -1,然后直接把权值设为 \(i+a_i\) 然后就可以确定 \(A\) 中的 \(i\) 要换到哪里,然后直接逆序对数即可。
D
不要试图构造一个匹配,尝试去看那些正负取值方法是合法的。
然后其实可以大力猜结论:正负号合法当且仅当奇数位的正号个数=偶数位的负号个数。
然后枚举奇数位的正号个数,每次肯定贪心把绝对值最大的变成正,绝对值最小的变成负,考虑到如果是最优的话一定会被枚举到 (因为可以构造),然后如果正负号不合法一定不劣。
构造的话,就是对于一个 +1/-1 序列,每次取出最早一段前缀和为 0,然后和第一位相同的填左括号,否则填右括号。因为 +1,-1 个数相同且不会造成负数,所以一定合法。
E
和 D 题完全相反,尝试乱搞而没有想到 \(dp\)。
很显然是二分答案,然后考虑一个人其实只有两种策略:
- 先向左碰到以后全力向右,这时候他右边的人在终止时间前和他要有个相遇(可以搞一个等效点)。
- 向右先碰到然后再向左冲,此时其实是解一个方程,根据左边那个人能到的最左来判断这个点初始能往右冲多少。
所以直接 \(dp_{i,0/1}\) 表示第 \(i\) 个人,用哪种策略,能到的最右点,然后中间有一个不能交就直接返回无解。