Codeforces Round #648 (Div. 2)(A-F)簡要題解

Codeforces Round #648 (Div. 2)(A-F)簡要題解

A. Matrix Game

奇偶性博弈
顯然每次選一個格子,可用的行和列都會減1,所以只需看最初可用的行和列的最小值的奇偶性即可。

B. Trouble Sort

簡單思維
觀察一下可得只要一個序列有兩種類型就可以得到任何排列,若只有一種類型判斷一下序列是否非遞減即可。

C. Rotation Matching

暴力
因爲向左移動kk次等於向右移動nkn-k次,且最多移動k1k-1次,所以我們只需要找到移動向左(右)移動多少次時有最大答案。我們只需mapmap記錄aa的位置,然後計算aa中與bb相同數字的位置差,它代表序列移動的次數。最後取最大值即可。

D. Solve The Maze

貪心
考慮堵住BB的四周肯定是最優的,且當BB周圍有GG時顯然無解,所以可以將BB周圍都變成不可走的路徑,然後從(n,m) dfs(n,m)\ dfs一下能否走到GG即可。

E. Maximum Subsequence Value

貪心
k3k\leq 3時最優的,由鴿巢原理可得,當k>3k>3時肯定能選出size=3size=3的子集滿足同樣條件。

舉個例子:n=4,cnt=n2=2n=4,cnt=n-2=2,被分成3,13,1兩個部分,cnt=2cnt=2中至少一個在33這個集合裏。

n=5,cnt=n2=3n=5,cnt=n-2=3被分成3,23,2兩個部分,cnt=3cnt=3中至少有一個在3這個集合裏。

F. Swaps Again

思維
無論怎麼交換,最開始兩個相對的數的位置pos1=i,pos2=n+1ipos_1=i,pos_2=n+1-i仍然保持相對不變,實際位置可以變。ep:n=5,(1,5)(2,4)ep:n=5,(1,5)可以變成(2,4)所以只需對兩個數組記錄一下序數對,然後排序看是否相等即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章