fzu 1877 Minisum [动态规划]
2010-06-19 15:31
225 查看
Fzu月赛题目,当时没做出来。
最小化Ans=Min{sum{ai*aj},其中遍历所有的i<j};
而ai 只考虑取a[i] 或者 -a[i];(这里不知道why了?)
考虑dp[i][j] : 前i个数可能组成的和为j时的 当前ans的最小值.
考虑数据范围,j可能的取值为[-4000 , 4000]。
因此为了不出现负数,加上定值M=4000。
那么dp[i+1][j+a[i+1]]=min(dp[i+1][j+a[i+1]],dp[i][j]+ (j-M)*a[i+1]);
dp[i+1][j-a[i+1]]=min(dp[i+1][j-a[i+1]],dp[i][j]+ (j-M)*(-a[i+1]));
小结:这是一种 长度上的线性动态规划。
要注意观察数据范围,设计出易于状态转移的状态方程。
最小化Ans=Min{sum{ai*aj},其中遍历所有的i<j};
而ai 只考虑取a[i] 或者 -a[i];(这里不知道why了?)
考虑dp[i][j] : 前i个数可能组成的和为j时的 当前ans的最小值.
考虑数据范围,j可能的取值为[-4000 , 4000]。
因此为了不出现负数,加上定值M=4000。
那么dp[i+1][j+a[i+1]]=min(dp[i+1][j+a[i+1]],dp[i][j]+ (j-M)*a[i+1]);
dp[i+1][j-a[i+1]]=min(dp[i+1][j-a[i+1]],dp[i][j]+ (j-M)*(-a[i+1]));
小结:这是一种 长度上的线性动态规划。
要注意观察数据范围,设计出易于状态转移的状态方程。
]// fzu 1877 Minisum Jun 19 ,Sat,14:50 #include<iostream> #include<algorithm> #include<cstring> #include<cstdio> using namespace std; const int MAX=50; const int M=4000; const int INF=0x5fffffff; int N,a[MAX],dp[MAX][10000]; void DP() { int i,j; dp[1][a[1]+M]=0; dp[1][-a[1]+M]=0; for(i=1;i<N;i++) { for(j=0;j<=8000;j++) { if(dp[i][j]==INF) continue; dp[i+1][j+a[i+1]]=min(dp[i+1][j+a[i+1]],dp[i][j]+(j-M)*a[i+1]); dp[i+1][j-a[i+1]]=min(dp[i+1][j-a[i+1]],dp[i][j]+(j-M)*(-a[i+1])); } } } int main() { int i,j; while(scanf("%d",&N)==1) { for(i=1;i<=N;i++) scanf("%d",&a[i]); for(i=1;i<=N;i++) { for(j=0;j<=8000;j++) dp[i][j]=INF; } DP(); int ans=INF; for(i=0;i<=8000;i++) ans=min(ans,dp [i]); printf("%.2lf/n",(double)ans); } system("pause"); return 0; }
相关文章推荐
- FZU 2129 子序列个数 (动态规划)
- FZU 2177 动态规划
- FZU 2129 子序列个数 (动态规划)
- FZU 2129 子序列个数 (动态规划)
- fzu - 牧场物语-2234 - 动态规划
- FZU 2109 Mountain Number [数位DP]【动态规划】
- FZU 2098 刻苦的小芳(卡特兰数,动态规划)
- FZU 2098 刻苦的小芳(卡特兰数,动态规划)
- FZU 2146 Easy Game
- 动态规划☞背包问题(⊙o⊙)…
- fzu 1894 单调队列
- hdu1160 FatMouse's Speed (子序列 - 动态规划)
- 【北大夏令营笔记-动态规划】poj1458-Common Subsequence
- FZU2129 子序列个数(dp求不同子序列个数)
- 【ACM训练计划】 HDU 动态规划(46道题目)倾情奉献~ 【只提供思路与状态转移方程】
- hdu_1078_FatMouse and Cheese_神奇的贪心_动态规划_算不上是dp
- FZU oj 1683 纪念SlingShot(矩阵快速幂)
- UVA - 437 The Tower of Babylon (动态规划)
- 矩阵链乘法(动态规划)
- fzu 1759 Super A^B mod C