设为首页 加入收藏

TOP

hdu1421 搬寝室(dp)
2015-07-20 17:34:54 来源: 作者: 【 】 浏览:2
Tags:hdu1421 寝室
/*
  先对n中物品的重量排序
   令dp[i][j]表示前i个物品中选j对的最小疲劳度。
   则dp[i][j]可能含有第i个物品(这种情况下,第i种物品一定是和第i-1个物品配对),
   则dp[i][j]=dp[i-2][j-1]+(val[i]-val[i-1])*(val[i]-val[i-1])
    dp[i][j]的j对也可能不含有第i个物品,此时有
   dp[i][j]=dp[i-1][j]
   状态转移方程
   dp[i][j]=min{dp[i-2][j-1]+(val[i]-val[i-1])*(val[i]-val[i-1]),dp[i-1][j]
*/
# include 
  
   
# include 
   
     # include 
    
      # define INF 999999999 using namespace std; int dp[2100][2100]; int a[2100]; 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<=n;i++) for(j=1;j<=k;j++) dp[i][j]=INF; for(i=2;i<=n;i++) { for(j=1;j*2<=i;j++) { dp[i][j]=min(dp[i-1][j],dp[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1])); } } printf("%d\n",dp[n][k]); } return 0; } 
    
   
  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++11的一些特性 下一篇C++设计模式之代理模式

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)
·Redis配置中`require (2025-12-26 03:18:58)
·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)