HDU 1421
2015-08-18 18:27
232 查看
思路分析:
状态转移方程:dp[i,j]=min{dp[i-1,j],dp[i-2,j-1]+a[i]}
状态转移方程:dp[i,j]=min{dp[i-1,j],dp[i-2,j-1]+a[i]}
# include <iostream> # include <algorithm> using namespace std; int a[2005],b[2005]; int dp[2005][2005]; int getDP(int i,int j) { if(i<2*j) return 1000000000; if(j==0) return 0; return dp[i][j]; }//针对特殊情况的处理 int main() { int n,k; while((scanf("%d%d",&n,&k))!=EOF) { int i,j; for(i=1;i<=n;i++) scanf("%d",&a[i]); sort(a+1,a+n+1);//对输入的数组按升序排列 for(i=1;i<n;i++)//计算相邻的数据的差的平方 { a[i]=a[i+1]-a[i]; b[i]=a[i]*a[i]; } for(i=2;i<=n;i++) { for(j=1;j<=k;j++) { dp[i][j]=min(getDP(i-1,j),getDP(i-2,j-1)+b[i-1]); } } printf("%d\n",dp [k]); } return 0; }
相关文章推荐
- 基于Android中dp和px之间进行转换的实现代码
- Android中dip、dp、sp、pt和px的区别详解
- 简单的四则运算
- 数的奇偶性
- LFC1.0.0 版本发布
- Android px、dp、sp之间相互转换
- ACM网址
- 1272 小希的迷宫
- 1272 小希的迷宫
- hdu 1250 大数相加并用数组储存
- 矩阵的乘法操作
- android中像素单位dp、px、pt、sp的比较
- Android对px和dip进行尺寸转换的方法
- 蚂蚁爬行问题
- 蚂蚁爬行问题
- 求两个数的最大公约数【ACM基础题】
- 打印出二进制中所有1的位置
- 杭电题目---一只小蜜蜂
- HDOJ 1002 A + B Problem II (Big Numbers Addition)
- POJ ACM 1002