題目連結:
題目大意:
第一列給定兩正整數 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
假設一開始牌值為負的有 M 張。則只需考慮以下兩種情況:
M ≧ k ,把負的牌中絕對值較大的那 k 張牌翻轉,即可使總和最大。
M < k ,則先把所有負的牌翻正。接著從所有正的牌中(包含剛剛翻正的牌)挑出最小的牌並將剩下的次數( M - k 次)用來翻這張牌。若 M - k 為偶數,最大值即為所有牌的絕對值組合;反之,最大值為所有絕對值總和 - 2 倍的最小牌。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。