题目转自hdu 1421,题目传送门


题目大意:

给你n个物品,你要搬走2*k个(也就是搬k次)

每次搬需要花费v,v=(ai-aj)2 (i表示左手拿的物品重量,j表示右手拿的物品的重量)

要求所有v相加得数最少

不难看出,这就像是01背包

这道题很水但我还是调了0.25h

感谢wsy大佬的帮助


解题思路:

emmm......

首先,这肯定是一个n*k的dp

其中,i表示有i个物品,j表示需要搬j回

那么我们可以得出它的转移方程:

dp[i][j]=min(dp[i-][j],dp[i-][j-]+(int)pow((w[i]-w[i-]),));

让后就很简单了

才怪,上面的我10min就想出来了,下面才让我最头疼

初始化

下面是我原来写的初始化:

memset(dp,0x7f,sizeof(dp));

然后各种WA

然后改了一下(25min),如下:

for(int i=;i<=n;i++) for(int j=;j<=k;j++) dp[i][j]=inf;

然后就AC了!!!

一个memset让我调了0.25h!(好不值)


以下是AC代码:

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<cmath>
#define inf 2147483647
using namespace std;
int n,k;
int w[];
int dp[][];
int main()
{
while(scanf("%d%d",&n,&k)!=EOF)
{
for(int i=;i<=n;i++) for(int j=;j<=k;j++) dp[i][j]=inf;
// memset(dp,0x7f,sizeof(dp));
for(int i=;i<=n;i++) scanf("%d",&w[i]);
sort(w+,w++n);
dp[][]=;
for(int i=;i<=n;i++) for(int j=;*j<=i;j++)
{
dp[i][j]=min(dp[i-][j],dp[i-][j-]+(int)pow((w[i]-w[i-]),));
// cout<<"dp["<<i<<"]["<<j<<"]="<<dp[i][j]<<endl;
}
printf("%d\n",dp[n][k]);
}
return ;
}

从这道题我得到了一个深刻的教训

永远不要相信memset

这道题就这样水过了,就这样......

DP问题(2) : hdu 1421的更多相关文章

  1. hdu 1421:搬寝室(动态规划 DP + 排序)

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

  2. 【dp】HDU 1421 搬寝室

    http://acm.hdu.edu.cn/showproblem.php?pid=1421 [题意] 给定n个数,要从n个数中选择k个二元组{x,y},最小化sum{(x-y)^2} 2<=2 ...

  3. 题解报告:hdu 1421 搬寝室(递推dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1421 Problem Description 搬寝室是很累的,xhd深有体会.时间追述2006年7月9 ...

  4. HDU 1421 搬寝室 (线性dp 贪心预处理)

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

  5. [HDU 1421]搬寝室(富有新意的DP)

    题目地址:pid=1421" target="_blank">http://acm.hdu.edu.cn/showproblem.php? pid=1421 题目大 ...

  6. HDU 1421 DP

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

  7. 搬寝室(HDU 1421 DP)

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

  8. hdu 1421 搬寝室(dp)

    Problem Description 搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3号楼,因为10号要封楼了.看着寝室里的n件物品,xhd开始发呆, ...

  9. hdu 1421 搬寝室 (dp)

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

随机推荐

  1. 通过requirements.txt文件创建虚拟环境副本

    1.首先在原来的环境中生成一个需求文件requirements.txt,用于记录所有依赖包及其精确的版本号. (venv) $ pip freeze >requirements.txt 2.创建 ...

  2. tensor 中mul_,add_解读

    pytorch 中文网文档链接 https://ptorch.com/docs/1/Tensor 每一个张量tensor都有一个相应的torch.Storage保存其数据,张量类提供了一个多维的,横向 ...

  3. vue中toggle切换的3种写法

    前言:查看下面代码,在任意编辑器中直接复制粘贴运行即可 1:非动态组件(全局注册2个组件,借用v-if指令和三元表达式) <!DOCTYPE html> <html> < ...

  4. python小项目(python实现鉴黄)源码

    import sys import os import _io from collections import namedtuple from PIL import Image class Nude( ...

  5. 剑指 Offer——1. 二维数组中的查找

    题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...

  6. jenkins+robotframework邮件发送报告模板

    1.Jenkins中配置系统邮件系统管理–系统设置,配置Extended E-mail Notification 2.jenkins 创建一个新项目,项目创建成功,配置邮件

  7. 前端开发CSS3——使用方式和选择器

    CSS是Cascading Style Sheets(层叠样式表)的简写,用于修饰文档的语言,可以修饰HTML.XML.SVN.每个语言都有每个语法的规则:CSS声明.CSS声明块.CSS选择器.CS ...

  8. a标使用window.open()方法

    <a href="javascript:window.open('../Left_B/L_Gong_gao_Index', 'TencentLogin', 'width=1920px, ...

  9. PMP备考-第二章-项目运行环境与项目经理

    组织系统的三大因素:组织治理框架,管理要素和组织结构 组织治理和项目治理 组织治理 :组织中的重要决策制定框架,谁有权在什么时候用什么发放做出并推行什么重要决策. 项目治理 :组织为项目建立的高级别的 ...

  10. Java 打印HelloKitty

    Java第一课 如何在控制台打印出"Hello Kitty" 如图所示,在IDE中使用 System.out.println(); 语句来实现打印 最后附上AIDE下载链接: Ja ...