Codeforces Round #648 (Div. 2)(A-F)简要题解

Codeforces Round #648 (Div. 2)(A-F)简要题解

A. Matrix Game

奇偶性博弈
显然每次选一个格子,可用的行和列都会减1,所以只需看最初可用的行和列的最小值的奇偶性即可。

B. Trouble Sort

简单思维
观察一下可得只要一个序列有两种类型就可以得到任何排列,若只有一种类型判断一下序列是否非递减即可。

C. Rotation Matching

暴力
因为向左移动 k k k次等于向右移动 n − k n-k nk次,且最多移动 k − 1 k-1 k1次,所以我们只需要找到移动向左(右)移动多少次时有最大答案。我们只需 m a p map map记录 a a a的位置,然后计算 a a a中与 b b b相同数字的位置差,它代表序列移动的次数。最后取最大值即可。

D. Solve The Maze

贪心
考虑堵住 B B B的四周肯定是最优的,且当 B B B周围有 G G G时显然无解,所以可以将 B B B周围都变成不可走的路径,然后从 ( n , m )   d f s (n,m)\ dfs (n,m) dfs一下能否走到 G G G即可。

E. Maximum Subsequence Value

贪心
k ≤ 3 k\leq 3 k3时最优的,由鸽巢原理可得,当 k > 3 k>3 k>3时肯定能选出 s i z e = 3 size=3 size=3的子集满足同样条件。

举个例子: n = 4 , c n t = n − 2 = 2 n=4,cnt=n-2=2 n=4,cnt=n2=2,被分成 3 , 1 3,1 3,1两个部分, c n t = 2 cnt=2 cnt=2中至少一个在 3 3 3这个集合里。

n = 5 , c n t = n − 2 = 3 n=5,cnt=n-2=3 n=5,cnt=n2=3被分成 3 , 2 3,2 3,2两个部分, c n t = 3 cnt=3 cnt=3中至少有一个在3这个集合里。

F. Swaps Again

思维
无论怎么交换,最开始两个相对的数的位置 p o s 1 = i , p o s 2 = n + 1 − i pos_1=i,pos_2=n+1-i pos1=i,pos2=n+1i仍然保持相对不变,实际位置可以变。 e p : n = 5 , ( 1 , 5 ) 可 以 变 成 ( 2 , 4 ) ep:n=5,(1,5)可以变成(2,4) ep:n=5,(1,5)(2,4)所以只需对两个数组记录一下序数对,然后排序看是否相等即可。

你可能感兴趣的:(codeforce简要题解,codeforce,DIV2,题解)