uva 6952 Cent Savings dp
来源:互联网 发布:淘宝主图促销水印 编辑:程序博客网 时间:2024/06/05 04:58
点击打开链接
题意:n件物品切d刀分成d+1份,每份的和四舍五入,问总和最小。
思路:相当于有n-1个空,插d个板子,那么我们就可以DP解决他,dp[i][j]表示前i个空插了j个板子后的最小值
dp[i][j]表示前i个切了j刀得到的最小和(刀切在i后面或不切)。
转移:dp[i][j] = min(dp[i-1][j]+a[i],cal(dp[i-1][j-1]+a[i]));
代码一:
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int maxn = 2e3+10;int a[maxn],dp[maxn][25];int cal(int x){int yu = x%10;if(yu>=5) x = x+10-yu;else x = x/10*10;return x;}int main(){int n,d;while(scanf("%d%d",&n,&d)!=EOF){for(int i=1; i<=n; i++)cin >> a[i];memset(dp,0x3f,sizeof(dp));dp[0][0] = 0;for(int i=1; i<n; i++){for(int j=0; j<=d; j++){if(j==0)dp[i][j] = dp[i-1][j]+a[i];elsedp[i][j] = min(dp[i-1][j]+a[i],cal(dp[i-1][j-1]+a[i])); // 前i-1个空用j个隔板,直接加,不四舍五入,如果四舍五入了,加下一个数的时候就不对了// 前i-1个空用j-1个隔板,第j个隔板放在第i个数的后面,四舍五入。}}int ans = 0x3f3f3f3f;for(int i=0; i<=d; i++)ans = min(cal(dp[n-1][i]+a[n]),ans);cout << ans << endl;}}
代码二: d[i][k]表示把1~i份分成k份。dp[i][k] = min(dp[i][k],dp[j][k-1]+cal(sum[i]-sum[j])); j+1~i是一份
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int maxn = 2e3+10;int a[maxn],sum[maxn],dp[maxn][25];int cal(int x){int yu = x%10;if(yu>=5) x = x+10-yu;else x = x/10*10;return x;}int main(){int n,d;while(scanf("%d%d",&n,&d)!=EOF){memset(sum,0,sizeof(sum));for(int i=1; i<=n; i++){cin >> a[i];sum[i] = sum[i-1]+a[i];}memset(dp,0x3f,sizeof(dp));dp[0][0] = 0;for(int i=1; i<=n; i++){dp[i][0] = cal(sum[i]);for(int j=1; j<i; j++){for(int k=0; k<=d; k++)dp[i][k] = min(dp[i][k],dp[j][k-1]+cal(sum[i]-sum[j]));}}int ans = 0x3f3f3f3f;for(int i=0; i<=d; i++)ans = min(dp[n][i],ans);cout << ans << endl;}}
0 0
- uva 6952 Cent Savings dp
- Cent Savings (DP)
- UVALive6952 Cent Savings DP
- HNU Cent Savings (DP)
- Cent Savings (DP) 分类: ACM dp 2015-08-0
- CDOJ 1114 Cent Savings
- Cent Savings UVALive
- uvalive6952 - Cent Sa dp
- Savings Account
- Daylight Savings Time (DST)
- HOJ 2597 Savings Account
- Hdu 2398 - Savings Account
- hdu2398 Savings Account - 数学
- UVA DP 入门专题
- uva 1424 简单DP
- uva 10192 DP
- UVA dp题目汇总
- UVa 4256 - Salesmen dp
- 虚拟黑车Java版
- Java类和对象
- <hadoop>在hadoop集群的map和reduce函数中传递自定义对象
- winform中的定时器 System.Timers.Timer用法
- Java中Comparable和Comparator区别小结
- uva 6952 Cent Savings dp
- 小词汇量的语音识别
- 黑白棋游戏
- 快速排序算法
- HDU - 2222 AC自动机模板题
- 优秀的程序员凡事先上谷歌搜索,哈哈
- Android混合方式开启服务
- salesforce 零基础学习(六十六)VF页面应善于使用变量和函数(二)常用函数的使用
- 机器学习:支持向量机(Support Vector Machine, SVM)