POJ1015
題意
現有兩方, 給出n個人,每方分別給n個人兩個分數分別為a[i],b[i],現要選出m個人,使得m個人兩方的和的差的絕對值最小,如果多組解,輸出雙方和最大的解(?1<=n<=200, 1<=m<=20, 0 <= a[i],b[i]<= 20)
分析
貪心顯然不可解
錯的思路:dp[i]表示n個人選出i個人的的最佳方案(即絕對值最小),但顯然轉移出現問題,dp[i+1]可能不是由dp[i]轉移過來的(假如:dp[i] 為1, 但也存在-5, 這時若有有個啊a[i]-b[i]==5,顯然-5轉移過里最佳)
正解
定義:dp[i][k]:n個人中選了i個人絕對值為k的最佳方案(和最大)
轉移:顯然dp[i][k](-20*m<=k<=20*k)是由dp[i-1][k+x]轉移過來,枚舉一下轉移就好,不存在的狀態用-1表示即可,注意枚舉順序
邊界:dp[0][0]=0,
轉載于:https://www.cnblogs.com/Superwalker/p/7912190.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
- 上一篇: Java基本语法——(用于日后复习)
- 下一篇: 搜索引擎大调整:百度出“惊雷算法”后36