转载:

/*证明:从4个数中 a b c d  依次递增;

选取相邻的两个数一定是最小得

及:(a-b)^2+(c-d)^2<(a-c)^2+(b-d)^2&&(a-b)^2+(c-d)^2<(a-d)^2+(b-c)^2;

//先排序,假设从n-1个中选取k对是最少得,那么从n个中选取k对,可以这样分析 对n-1个数 再在末尾增加一个数,那么这个数可能被选中成为k对中其中一对,可能不被选中,如果不被选中,那么从n个中选取k对就相当于从n-1个中选取k对,如果被选中,之前证明了选中的数必须是连续的两个才能事最小,那就相当于从n-2个数中选取k-1对加最后两个数成为,这样,状态转移方程就为dp[i][j]=min(dp[(i-1)][j],dp[(i-2)][j-1]+(a[i-1]-a[i])*(a[i-1]-a[i]));

*/

我的AC代码:

 1 #include<cstdlib>
 2 #include<iostream>
 3 #include<cstdio>
 4 #include<cstring>
 5 #include<algorithm>
 6 #include<cmath>
 7 using namespace std;
 8 #define MAX 2010
 9 int dp[MAX][MAX];
10 int f[MAX];
11 int n,k;
12 int main()
13 {
14        while(scanf("%d%d",&n,&k)!=EOF)
15        {
16                int i,j;
17                for( i=1;i<=n;i++)
18                        scanf("%d",&f[i]);
19                sort(f+1,f+n+1);
20                memset(dp,0,sizeof(dp));
21                for( i=2;i<=n;i++)
22                        for( j=1;j<=k&&j*2<=i;j++)
23                                if(i==j*2) dp[i][j]=dp[i-2][j-1]+(f[i]-f[i-1])*(f[i]-f[i-1]);
24                                else
25                                dp[i][j]=min(dp[i-1][j],dp[i-2][j-1]+(f[i]-f[i-1])*(f[i]-f[i-1]));
26                cout<<dp[n][k]<<endl;
27        }
28        return 0;
29 }

View Code

转载于:https://www.cnblogs.com/xiaozhuyang/p/hdu1421.html

hdu1421 搬寝室 DP相关推荐

  1. HDU1421 搬寝室

    题目:搬寝室 典型的DP,状态方程: dp[k][i]=min(dp[k-1][i-2]+(a[i]-a[i-1])^2,dp[k][i-1]);         dp[k][i] 表示 k 对物品在 ...

  2. 动态规划——搬寝室(hdu1421)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1421 题目描述: 搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从 ...

  3. 搬寝室(HDU 1421 DP)

    搬寝室 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  4. 题目1452:搬寝室(dp题目)

    题目链接:http://ac.jobdu.com/problem.php?pid=1452 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...

  5. HDU 1421 搬寝室 解题报告(超详细)

    **搬寝室 Time Limit: 2000/1000 MS Memory Limit: 65536/32768 K Problem Description 搬寝室是很累的,xhd深有体会.时间追述2 ...

  6. hdoj_1421搬寝室

    搬寝室 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  7. TKO 6-7DP入门之搬寝室

    搬寝室 涉及数学公式的证明以及一些贪心思想: Problem Description 搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3号楼,因为10号要 ...

  8. hdu 1421 搬寝室 (dp)

    思路分析: dp[i][j] 表示选取到第 i 个   组成了 j 对的最优答案. 当然排序之后 选取相邻两个是更优的. if(i==j*2) dp[i][j] = dp[i-2][j-1] + w[ ...

  9. hdu 1421 搬寝室

    状态转移方程还是很难找啊...... 感觉自己分析很不到位,依旧参考了别人的分析...... #include <iostream> #include <cstdio> #in ...

最新文章

  1. mupdf java_mupdf库学习
  2. php swoole 心跳,聊聊swoole的心跳
  3. 乘法口诀练习(python-for循环)
  4. html5-5 HTML5表单元素和内嵌框架
  5. 伺服电机PID控制及增益调节
  6. 计算模型的GFLOPs和参数量 举例VGG16和DETR
  7. BMZ-MISC-可乐加冰
  8. 剁馅机器人图片_河南大妈开店十年卖饺子, 剁馅用上机器人, 莲菜大肉馅还真好吃...
  9. 一个人、一瓶酒、半斤肉饼、两杯饮料
  10. 金蝶云苍穹轻量级开发人员申请试用
  11. 微信支付之JSAPI支付
  12. 数据库6:连接查询和嵌套查询
  13. 面试中有关接口测试和接口自动化的那些事 ~
  14. windows环境下设置多个PHP版本的环境变量
  15. P3200 [HNOI2009]有趣的数列 (巧妙转换,卡特兰数,分解质因数取模运算)
  16. Internal Order内部订单
  17. 哈工大机器学习复习笔记(四)
  18. HFirst解读和复现心得
  19. 工具 | Codeblock下载与安装及使用
  20. windows下批量生成文件夹

热门文章

  1. 交易系统典藏书籍总汇以及系统交易、程序化交易等经典资料收藏
  2. centos mysql lujin_MySQL中文转换成拼音的函数[zt]
  3. window连接不上linux ftp_不懂操作?手把手教你如何在linux下搭建FTP
  4. 系统学习机器学习之正则化(一)
  5. 【Java程序设计】数组
  6. 如何在内存中存储有序数据?
  7. 递归实现二分搜索(python)
  8. 刘鹏教授为江苏移动大数据和网络部门作报告
  9. 小程序自定义图片预览和多图下载的实现
  10. Java之品优购课程讲义_day05(4)