A Winged Steed

描述

有n种千里马,每一种都有若干匹,第i种马的颜值ai​,价格di​.现有m个牧马人要去挑选千里马,每一位牧马人对马的颜值都有要求:{所选马的颜值总和} ⩾Ai​.现在让你来为牧马人做满足要求的最低预算.

输入

单组测试数据,第一行两个整数n,m,(1≤n,m≤1e4).

接下来nn行,每行两个整数a1​,d1​,a2​,d2​,...an​,dn​.

最后一行mm个整数A1​,A2​,...Am​,(1≤ai​,di​,Ai​≤1e4).

输出

输出m个整数占一行,用空格隔开,表示每一位牧马人的最低花费.

输入样例 1 

2 2
1 2
2 1
5 5

输出样例 1

3 3

思路

完全背包,马的数量是无限的,把马看做是一个物品,把马的颜值看做物品的尺寸,牧马人对马的总颜值的要求看做是背包的体积,这样就转化成了一个完全背包问题。还有一点不同的是,要求满足>=总颜值要求的最小钱数。

比赛的时候卡到这里了,一直想不出来怎么处理相差的那部分,比赛后一看别人的代码,发现好简单,好神奇。就用了一个if就解决了问题。具体的解释放到代码里了

AC代码

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <limits.h>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <set>
#include <string>
#define ll long long
#define ms(a) memset(a,INF,sizeof(a))
#define pi acos(-1.0)
#define INF 0x3f3f3f3f
const double E=exp(1);
const int maxn=1e4+10;
using namespace std;
int dp[maxn];
// 颜值相当于物品的尺寸,每个人所需要的最小颜值是背包的体积
int beauty[maxn],money[maxn];
int p[maxn];
int main(int argc, char const *argv[])
{
ios::sync_with_stdio(false);
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>beauty[i]>>money[i];
int res=0;
for(int i=1;i<=m;i++)
{
cin>>p[i];
res=max(res,p[i]);
}
// 初始化处理dp
ms(dp);
dp[0]=0;
for(int i=1;i<=n;i++)
{
// j表示当前所需要的颜值
for(int j=1;j<=res;j++)
{
// 如果这个人对颜值的需求小于这匹马的需求,所花费的钱数变成dp[j]和money[i]中的较小者
// !!!这个if是关键
if(j<beauty[i])
dp[j]=min(dp[j],money[i]);
// 下面这里就是个完全背包了
else
dp[j]=min(dp[j],dp[j-beauty[i]]+money[i]);
}
}
// 按顺序输出所需的最小花费
for(int i=1;i<=m;i++)
{
if(i!=1)
cout<<" ";
cout<<dp[p[i]];
}
cout<<endl;
return 0;
}

HPU第四次积分赛-L:A Winged Steed(完全背包)的更多相关文章

  1. HPU第四次积分赛-K :方框(水题,打印图形)

    方框 描述 用'*'打印出一个nxn的字符图形(1<=n<=100). 输入 多组输入.每行输入一个n,输入EOF结束文件. 输出 输出一个满足题意的图形. 输入样例 1  1 2 5 6 ...

  2. 应对Memcached缓存失效,导致高并发查询DB的四种思路(l转)

    当Memcached缓存失效时,容易出现高并发的查询DB,导致DB压力骤然上升. 这篇blog主要是探讨如何在缓存将要失效时,及时地更新缓存,而不是如何在缓存失效之后,如何防止高并发的DB查询. 解决 ...

  3. ACM第四次积分赛

    虽然因为第一题给的数据有问题,没能四道题都做出来,但是这次第四名,进步很大,继续努力! SAU-ACM总比赛成绩       姓名     账号  上学期成绩 第一次成绩 第二次成绩 第三次成绩 第四 ...

  4. HPU第三次积分赛-D:Longest Increasing Subsequence(DP)

    Longest Increasing Subsequence 描述 给出一组长度为n的序列,a1​,a2​,a3​,a4​...an​, 求出这个序列长度为k的严格递增子序列的个数 输入 第一行输入T ...

  5. HPU 第三次积分赛:阶乘之和(水题)

    阶乘之和 描述 对于整数pp,给出以下定义 p=x_{1}!+x_{2}!+x_{3}!+...+x_{q}!(x_{i}<x_{j}for\ all\ i<j )p=x1​!+x2​!+ ...

  6. BZOJ 1212 [HNOI2004]L语言 【AC自动机 + 背包】

    题目链接[http://www.lydsy.com/JudgeOnline/problem.php?id=1212] 题意:给你一些单词,然后给出一个没有标点的文本串S,都是小写字符.现在让你求用给出 ...

  7. bzoj1004 [HNOI2008]Cards 置换群+背包

    [bzoj1004][HNOI2008]Cards 2014年5月26日5,3502 Description 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿 ...

  8. 能让你聪明的工作DEAL四法则,来自《每周工作四小时》书籍

    来自书籍<每周工作四小时>,作者蒂莫西·费里斯(Tim Ferriss,昵称:蒂姆)   能让你聪明的工作DEAL四法则: 第一步:D——定位(Definition) 第二步:E——精简( ...

  9. Python新式类 单例模式与作用域(四)

    1 新式类与旧式类 新式类拥有经典类的全部特性之外,还有一些新的特性,比如 __init__发生变化,新增了静态方法__new__,python3目前都采用新式类,新式类是广度优先,旧式类是深度优先 ...

随机推荐

  1. Java 正则校验整数,且只能是非0开头

    function checkNum(obj){ //修复第一个字符是小数点 的情况. if(obj.value !=''&& obj.value.substr(0,1) == '.') ...

  2. Win系列:VC++编写自定义组件

    在Visual Studio 中新建一个Visual C++的 Windows应用商店的Windows运行时组件项目,并将项目命名为FilePickerComponent.然后在项目的解决方案资源管理 ...

  3. Win10系列:JavaScript综合实例2

    在项目中添加一个名为pages的文件夹,并在pages文件夹里面再添加一个名为mainPage的文件夹,接着在mainPage文件夹里添加一个"页面控制"项,命名为mainPage ...

  4. java集合框架图

  5. 4.3 if-else语句使用

    Q:对输入的成绩进行登记划分. #include<iostream> #include<cstdio> using namespace std; int main() { in ...

  6. day22-python操作mysql2

    数据库连接池 python编程中可以使用MySQLdb进行数据库的连接及诸如查询/插入/更新等操作,但是每次连接mysql数据库请求时,都是独立的去请求访问,相当浪费资源,而且访问数量达到一定数量时, ...

  7. tomcat启动超时_tomcat was unable to start within

    参考: http://jingyan.baidu.com/article/64d05a025c9969de55f73b23.html 首先,你得确认下你的数据库连接,尤其是在多个服务器之间转换或者服务 ...

  8. 枚举,Math和Random

    1.实用类: 01.枚举 enum Student stu=new Student(); 我们为了保证用户一个健康的输入! 我们使用了封装特性! 用户就不能直接访问我们的属性了!! private c ...

  9. sass和scss的区别

    页面引入的时候还是引入的css文件 因为sass和scss都是一种css的预处理工具 目的最后都是生成css文件 sass不带{}和:是基于Ruby 写出来的,严格的缩进方式来控制 scss带这两个 ...

  10. 玩转X-CTR100 l STM32F4 l DAC数字模拟转换

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 DAC接口 ...