2019-09-03学习总结
作者:互联网
1、POJ 3017 Cut the Sequence(dp+单调队列)
题目:给出一个n个元素的序列,将其分成若干块,使得每块不超过m的情况下,所有块的总和最小。
思路:将当前已分的块数当做阶段,可得到转移方程 (值得一做)dp[i]=min(dp[i],dp[j]+max{a[k]}) {1<=j<=i,j<k<=i}但是这样会做大量的不必要的运算,所以可以选择单调队列最其进行优化,使得j从可选择的集合中进行枚举,极大的缩小复杂度。
2、POJ 2626 Chess(简单的线性DP)
题目:给定n个人每个人都有一个下黑白棋的能力,问选择15个人下白棋,15个下黑棋,如何使能力最大。
思路:三维数组表示状态,dp[i][j][k]表示前i个人j个人下白棋,k个人下黑棋。转移方程dp[i][j][k]=max{dp[i][j][k],dp[i-1][j-1][k]+w[i],dp[i-1][j][k-1]+b[i]},目标dp[n][15][15];
3、 Longtail Hedgehog(DP+简单图论)比较简单,但是自己没做过这类题目写了题解
4、HDU 5119 Happy Matt Friends(dp+状压)
题目:T组样例,每组样例包含n个数字,问在任意选取数量异或不超过m的种数,1<=n<=40,1<=m<=106。
思路:将i从前往后枚举,其下枚举枚举每一种状态 j 异或值(根据数值个取值范围可设j<=1<<20,),将异或总和当做阶段。方程: dp[i][j]=max(dp[i-1][j],dp[i-1][j^a[i]]}却或者不取。
5、
标签:03,15,个人,09,枚举,2019,题目,黑棋,dp 来源: https://blog.csdn.net/qq_43627100/article/details/100507502