切換
舊版
前往
大廳
主題

ZeroJudge - e178: Runningman - 翻牌挑戰 解題心得

Not In My Back Yard | 2019-05-25 21:35:27 | 巴幣 0 | 人氣 204

題目連結:


題目大意:
第一列給定兩正整數 n 、 k (0 ≦ n ≦ 10, 000,0 ≦ k ≦ 10 ^ 9),代表有 n 張牌,且現在要翻 k 次的牌。

第二列有 n 個整數 i ( -10 ^ 5 ≦ i ≦ 10 ^ 5 ),代表這 n 張牌初始的值。當一張卡被翻過來時,其正負號會顛倒( -1 變 1 , 7 變 -7 等等)。而同一張卡片可以重複翻。

求翻完 k 次的牌後,最後所有牌的值之總和最大可為何?



範例輸入:
3 1
1 2 3
4 3
0 -1 2 3
3 2
-1 -2 -3


範例輸出:
4
6
4


解題思維:
假設一開始牌值為負的有 M 張。則只需考慮以下兩種情況:

M ≧ k ,把負的牌中絕對值較大的那 k 張牌翻轉,即可使總和最大。

M < k ,則先把所有負的牌翻正。接著從所有正的牌中(包含剛剛翻正的牌)挑出最小的牌並將剩下的次數( M - k 次)用來翻這張牌。若 M - k 為偶數,最大值即為所有牌的絕對值組合;反之,最大值為所有絕對值總和 - 2 倍的最小牌。





此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作