搬寝室(HDU 1421 DP)
搬寝室
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 23264 Accepted Submission(s): 7951
(1)i==j*2 dp[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1])
(2)i>j*2 dp[i][j]=min(dp[i-1][j],dp[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1]))
1 #include <cstring> 2 #include <cstdio> 3 #include <algorithm> 4 #include <iostream> 5 using namespace std; 6 #define Max 2005 7 int a[Max]; 8 int b[Max][Max]; 9 int k,n; 10 int sum=0,temp; 11 int func(int x,int y) 12 { 13 if(b[x][y]==0) 14 b[x][y]=(a[x]-a[y])*(a[x]-a[y]); 15 return b[x][y]; 16 } 17 void dfs(int index,int s,int sep) 18 { 19 int i,j; 20 if(s>=sum) 21 return; 22 if(sep==(k+1)) 23 { 24 if(s<sum) 25 sum=s; 26 return; 27 } 28 for(i=index;i<=n-(k-sep+1)*2+1;i++) 29 { 30 temp=func(i,i+1); 31 dfs(i+2,s+temp,sep+1); 32 } 33 return; 34 } 35 int main() 36 { 37 int i,j; 38 memset(b,0,sizeof(b)); 39 freopen("in.txt","r",stdin); 40 while(scanf("%d%d",&n,&k)!=EOF) 41 { 42 sum=Max; 43 for(i=1;i<=n;i++) 44 scanf("%d",&a[i]); 45 sort(a+1,a+n+1); 46 dfs(1,0,1); 47 printf("%d\n",sum); 48 } 49 }
1 dp[i][j]表示前i件物品取j对的最优解#include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 #define N 2050 6 #define ll int 7 8 ll dp[N][N]; 9 ll a[N]; 10 11 int main() 12 { 13 ll n,k,i,j; 14 15 while(scanf("%d%d",&n,&k)!=EOF) 16 { 17 for(i=1;i<=n;i++) 18 scanf("%d",&a[i]); 19 sort(a+1,a+n+1); 20 memset(dp,0,sizeof(dp)); 21 dp[2][1]=(a[2]-a[1])*(a[2]-a[1]); 22 23 for(j=1;j<=k;j++) 24 for(i=j*2;i<=n;i++) 25 { 26 dp[i][j]=dp[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1]); 27 if(j*2<i) 28 { 29 dp[i][j]=min(dp[i-1][j],dp[i][j]); 30 } 31 32 33 } 34 printf("%d\n",dp[n][k]); 35 } 36 37 return 0; 38 }
转载于:https://www.cnblogs.com/a1225234/p/5259028.html
搬寝室(HDU 1421 DP)相关推荐
- 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 对物品在 ...
- HDU 1421 搬寝室 解题报告(超详细)
**搬寝室 Time Limit: 2000/1000 MS Memory Limit: 65536/32768 K Problem Description 搬寝室是很累的,xhd深有体会.时间追述2 ...
- 题目1452:搬寝室(dp题目)
题目链接:http://ac.jobdu.com/problem.php?pid=1452 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...
- 动态规划——搬寝室(hdu1421)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1421 题目描述: 搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从 ...
- hdoj_1421搬寝室
搬寝室 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...
- TKO 6-7DP入门之搬寝室
搬寝室 涉及数学公式的证明以及一些贪心思想: Problem Description 搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3号楼,因为10号要 ...
- HDU 5928 DP 凸包graham
给出点集,和不大于L长的绳子,问能包裹住的最多点数. 考虑每个点都作为左下角的起点跑一遍极角序求凸包,求的过程中用DP记录当前以j为当前末端为结束的的最小长度,其中一维作为背包的是凸包内侧点的数量.也 ...
- hdu 1171 dp(多重背包)
View Code //hdu 1171 dp(多重背包)//题意:把所有物品的价值尽量分为相等的两份,不能等分的话 //后面那份可以稍小于前面的 //求出价值总和后,令价值的一半为背包容量,让背包尽 ...
- hdu 1421 搬寝室 (dp)
思路分析: dp[i][j] 表示选取到第 i 个 组成了 j 对的最优答案. 当然排序之后 选取相邻两个是更优的. if(i==j*2) dp[i][j] = dp[i-2][j-1] + w[ ...
最新文章
- java两个jre_为什么会有两个jre?060925(原创)
- 直播赠书丨如何高效学习计算机视觉?
- python文件编译_我算是白学Python了,现在才知道原来Python是可以编译的
- java 虚拟机 初始化_Java虚拟机 类初始化 阶段
- 安装debian第一天遇到的几个问题及解决方案
- Lucene查询索引代码实现
- quill鼠标悬浮 出现提示_「超逸酷玩」VT300S RGB电竞游戏鼠标支持云同步自定义设置...
- Magento 创建优惠卷 Create unique coupon code in Magento
- 实战HTML:花瓣网
- 学Java编程可以做什么?发展方向有哪些?
- 二进制 八进制 十进制 转换
- 康托尔—探索无穷的勇士
- 陆面生态水文模拟与多源遥感数据同化技术
- oracle水仙花,希腊神话中的水仙花和回声
- linux文件 含义,Linux各个文件及其含义
- python xls 转化 xlsx
- 祝您健康:抢救脑溢血患者的神奇秘方:针刺十宣穴,涌泉穴
- ITSM | 权威指南发布,高速IT服务管理团队是什么样子的?
- MLM模型中,是否应该按15%的比例mask?
- 二年级机器人伙伴看图写话_机器人的看图写话范文-看图写话机器人老师?
热门文章
- 《Python编程从入门到实践》记录之第2章 变量和简单数据类型总结(思维导图)
- 基于Tensorflow实现DeepFM
- ElasticSearch优化系列二:机器设置(内存)
- Linux 开机启动
- cocos2d-android-1 使用方法
- python三种数据类型_Python零基础入门学习02:Python基本数据类型:数字类型
- centeros7安装mysql
- BZOJ4545: DQS的trie 广义后缀自动机_LCT
- 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器
- c# 删除文件,清理删除文件