Uvalive 6434 - Number Assignment(dp)
来源:互联网 发布:mysql blob 中文乱码 编辑:程序博客网 时间:2024/06/05 01:20
题目链接
Uvalive 6434 - Number Assignment
题意:有N个数,现在要将他们分成M个组,每个组一定要有元素,每个数一定要在一个组,每个组有一个花费为该组最大的数减该组最小的数,求所有花费之和的最小值。
比较水的dp,先将N个数从小到大排序,因为如果要把几个数分成一个组,那么这几个数连续的话花费一定更小。dp【i】【j】表示前i个数分成 j 组的最小花费,那么转移就是:dp【i】【j】=min(dp【k】【j-1】+a【i】-a【k+1】,1<=k<i)。细节见代码:
#include<stdio.h>#include<iostream>#include<algorithm>#define inff 0x3fffffffusing namespace std;int n,m;int dp[110][110];int a[110];int main(){ int t,i,j; int cas=1; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(i=1;i<=n;i++) { scanf("%d",&a[i]); } sort(a+1,a+n+1); for(i=0;i<=n;i++) { for(j=0;j<=m;j++) dp[i][j]=inff; } int g; for(i=1;i<=n;i++) { dp[i][1]=a[i]-a[1]; for(j=2;j<=m;j++) { for(g=1;g<i;g++) { dp[i][j]=min(dp[i][j],dp[g][j-1]+a[i]-a[g+1]); } } } printf("Case #%d: %d\n",cas++,dp[n][m]); } return 0;}
0 0
- Uvalive 6434 - Number Assignment(dp)
- UVALive 6434 Number Assignment(dp)
- UVALive 6434 Number Assignment(dp)
- UVALive 5004 Balanced Number && hdu-3967 Zero's Number(数位dp)
- Number Assignment
- UVALIVE 3516(DP)
- uvalive 5004 hdu 3709 Balanced Number 左右数字权和相等(数位dp)
- UVALive 6434 简单排序/DP
- hdu 6006 Engineer Assignment(状压dp)
- UVALive 6430 Points(dp)
- UVALive 6848Fishing(dp)
- UVALive 7365 Composition (DP)
- UVALive 3305 Tour(DP)
- UVALive 6692 Lucky Number (思路 + 枚举)
- Engineer Assignment dp
- UVALive 4625 Garlands(二分答案 + DP)
- UVALive 3305Tour(双调DP)
- UVALive 3608 Period(二分答案+DP)
- 如何快速读懂大型C++程序代码
- 大话一些大二层网络技术新兴术语,并总结它与OpenStack的关系 (by quqi99)
- <九度 OJ>题目1059:abc
- UIViewController的生命周期及iOS程序执行顺序
- SpringMVC学习---------文件上传
- Uvalive 6434 - Number Assignment(dp)
- compensate capacitance 's use
- 从一件不起眼的小事开始做起
- jQuery添加新元素/内容
- leetcode Binary Tree Postorder Traversal
- cmd命令大全
- hdu1603
- java读取中文分词工具(三)
- 利用动态规划找出最长公共单调递增子序列