hdu 1421 搬寝室(dp)
2014-03-03 21:08
501 查看
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1421
思路:d[i][j] 表示前i 个,k对的最小值。
这个题还是不太好想状态方程,初始化以后,还要分一下情况。。
思路:d[i][j] 表示前i 个,k对的最小值。
这个题还是不太好想状态方程,初始化以后,还要分一下情况。。
#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> using namespace std; const int maxn = 2000+10; const int maxm = 1000+10; const int INF = 1<<28; int d[maxn][maxm]; int a[maxn]; int _min(int x, int y) { return x>y?y:x; } int main() { int n, k, i, j; while(~scanf("%d%d", &n, &k)) { for(i = 1; i <= n; i++) scanf("%d", &a[i]); sort(a+1, a+n+1); for(i = 0; i < maxn; i++) d[i][0] = 0; for(i = 2; i <= n; i++) for(j = 1; j*2 <= i; j++) { if(j*2 <= i-1) d[i][j] = _min(d[i-1][j], d[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1])); //一般情况下,求新增加一个 和以前的比较 else d[i][j] = d[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1]); //当i为偶数情况时,且j达到最大的时候 } printf("%d\n", d [k]); } return 0; }
相关文章推荐
- mysql查询语句(mysql学习笔记七)
- Python——字符串
- 大端存储和小端存储,网络字节序
- hdu 2845 Beans(最长不连续子序列和)
- MFC—日积月累
- zedboard的裸机中断实验(一)
- 题目1188:约瑟夫环
- 组合问题(从M个不同字符中任取N个字符的所有组合)
- android 处理鼠标滚轮事件
- 将鼠标焦点定位到文本框最后
- Socket&GCDAsyncSocket(异步Socket)
- 多个数据库间同步技术
- OpenCV
- code forces 399A Pages
- 【算法导论】归并排序实现
- ACM-简单题之u Calculate e——hdu1012
- hdu1431 素数回文(素数筛/埃拉托斯特尼筛法)
- 九度OJ 题目1002:Grading
- c++ string.split()使用
- MATLAB中多行注释的三种方法