Topcoder 658 div2 500 加强版
不过给了<=20,暴力肯定不行。
然后想DP方程,先二分可能需要的最大次数mid;
然后根据 mid 构造 DP方程。
假设x[i]需要 x个9 ,y个3,z个1,x*9+y*3+z>=x[i];
然后求出dp[n][[x]][y][z]<=mid 是否 符合。
转移方程为:dp[i+1][n9+m9][m3+n3]=min(dp[i+1][n9+m9][n3+m3],dp[i][n9][n3]+max(0,x[i]-9*m9-3*m3));
(i<n,m9+n9<=mid,m3+n3<=mid)
这里是5维
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include
状态,需要剪枝。