博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1421(搬寝室)
阅读量:5144 次
发布时间:2019-06-13

本文共 1308 字,大约阅读时间需要 4 分钟。

题目链接:

状态转移方程有点困难。。。orz,得练那。。。

View Code
1 /* 2 题目大意: 3 给定n个物品,每个物品有重量, 4 从中选出m对,使得这m对物品重量差的平方和最小。 5 疲劳度:m对物品重量差的平方和 6 分析与解题思路 7 先对n中物品的重量排序 8 令dp[i][j]表示前i个物品中选j对的最小疲劳度。 9 则dp[i][j]可能含有第i个物品(这种情况下,第i种物品一定是和第i-1个物品配对),10 则dp[i][j]=dp[i-2][j-1]+(w[i]-w[i-1])*(w[i]-w[i-1])11 dp[i][j]的j对也可能不含有第i个物品,此时有12 dp[i][j]=dp[i-1][j]13 状态转移方程14 dp[i][j]=min{dp[i-2][j-1]+(w[i]-w[i-1])*(w[i]-w[i-1]),dp[i-1][j]}15 */16 17 #include
18 #include
19 const int N=2020;20 const int inf=1100000000;//这个数据得大些,一开始wa了21 using namespace std;22 23 int w[N];24 int dp[N][N/2];//dp[i][j]表示前i个物品选j对的疲劳度25 26 int main(){27 int n,k;28 while(scanf("%d%d",&n,&k)!=EOF){29 for(int i=1;i<=n;i++){30 scanf("%d",&w[i]);31 }32 sort(w+1,w+n+1);33 for(int i=0;i<=n;i++){34 for(int j=1;j<=2*i;j++){35 dp[i][j]=inf;36 }37 }38 for(int i=0;i<=n;i++){39 dp[i][0]=0;40 }41 for(int i=2;i<=n;i++){42 for(int j=1;2*j<=i;j++){43 dp[i][j]=min(dp[i-1][j],dp[i-2][j-1]+(w[i]-w[i-1])*(w[i]-w[i-1]));44 }45 }46 printf("%d\n",dp[n][k]);47 }48 return 0;49 }

 

转载于:https://www.cnblogs.com/wally/archive/2013/03/12/2956468.html

你可能感兴趣的文章
图片延迟加载开源方案-lazysizes
查看>>
树上倍增LCA模版
查看>>
破窗效应
查看>>
tab+swiper+fixed
查看>>
python 备份压缩传输
查看>>
js中使用EL表达式
查看>>
MySQL建表语句+添加注释
查看>>
自用正则表达式记录
查看>>
文件下载
查看>>
软件工程的实践项目的自我目标
查看>>
性能优化的 ULBOX(收集-)
查看>>
MongoDB——mongo-connector同步到ES
查看>>
C#关于AutoResetEvent的使用介绍[转载]
查看>>
利用C#开发基于snmpsharpnet基础的SNMP开发应用
查看>>
data.table
查看>>
《机器学习系统设计》(2)
查看>>
【bzoj 1407】【Noi2002】Savage
查看>>
循序渐进之Spring AOP(2) - 基本概念
查看>>
C#的Lazy与LazyInitializer
查看>>
mysql设置远程访问之后 远程访问非常缓慢 解决办法!
查看>>