2021牛客暑期多校训练营1 G-Game of Swapping Numbers(最优解转化+贪心)
G-Game of Swapping Numbers
講題人做法
最優解轉化:
考慮任意一個最優解,我們把交換后的數字重新放回原來的位置,相當于為每一個元素分配了它在答案中的符號。比如 A={0, 3}, B = {1, 2},最優解符號分配是 A={-0,+3}, B={-1,+2}。
考察符合要求的解符號分配規則,其實只要滿足 A, B 中正號總和和負號總和相等,而 A、B 各自的正負號可以不一樣。
注意:有可能出現正負號和實際絕對值相反的情況,這樣如果不交換答案會更劣,我們求最優解不會影響。轉化后的問題和原問題不完全相同,但是最優解相同!!!
結論:n>2時,恰好 k 步與至多 k 步是等價的,當 n>2 時,A 中一定至少存在兩個 + 號或兩個 - 號,此時如果我們交換這兩個符號對應的數,則并不會使得原問題的解變得更劣。n=2 需要特殊判斷。
求最優對換解:
考慮對于 AiA_iAi? 和AjA_jAj?,如果需要答案變優,則需要兩個區間沒有交(區間是[min?(Ai,Bi),max?(Ai,Bi)][\min(A_i,B_i),\max(A_i,B_i)][min(Ai?,Bi?),max(Ai?,Bi?)]畫畫圖即可看出),并且變優 2×[min?(Ai,Bi)?max?(Aj,Bj)]2×[\min(A_i,B_i) - \max(A_j, B_j)]2×[min(Ai?,Bi?)?max(Aj?,Bj?)]。因此只需要將所有的 2×min?(Ai,Bi)2×\min(A_i, B_i)2×min(Ai?,Bi?) 和 2×max?(Ai,Bi)2×\max(A_i, B_i)2×max(Ai?,Bi?)排序,依次取前 kkk 大相減取和即可。
總結
以上是生活随笔為你收集整理的2021牛客暑期多校训练营1 G-Game of Swapping Numbers(最优解转化+贪心)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手机与电脑连接不上是什么原因
- 下一篇: 2021牛客暑期多校训练营1 H-Has