【HDU - 3466 】Proud Merchants(dp,背包问题,巧妙排序)

题干:

Recently, iSea went to an ancient country. For such a long time, it was the most wealthy and powerful kingdom in the world. As a result, the people in this country are still very proud even if their nation hasn’t been so wealthy any more. 
The merchants were the most typical, each of them only sold exactly one item, the price was Pi, but they would refuse to make a trade with you if your money were less than Qi, and iSea evaluated every item a value Vi. 
If he had M units of money, what’s the maximum value iSea could get? 
 

Input

There are several test cases in the input. 

Each test case begin with two integers N, M (1 ≤ N ≤ 500, 1 ≤ M ≤ 5000), indicating the items’ number and the initial money. 
Then N lines follow, each line contains three numbers Pi, Qi and Vi (1 ≤ Pi ≤ Qi ≤ 100, 1 ≤ Vi ≤ 1000), their meaning is in the description. 

The input terminates by end of file marker. 
 

Output

For each test case, output one integer, indicating maximum value iSea could get. 
 

Sample Input

2 10
10 15 10
5 10 5
3 10
5 10 5
3 5 6
2 7 3

Sample Output

5
11

题目大意:

给你一些钱 m ,然后在这个国家买东西, 共有 n 件物品,每件物品有  价格 P    价值 V    还有一个很特别的属性 Q, Q 指 你如过想买这件物品 你的手中至少有这钱Q 。 虽然你只要花费 钱P ,但你的手中至少有钱Q,如果不足Q ,不能买。问给你钱M ,列出N件物品,最多能获得多少价值的东西。。。。

解题报告:

    先排序,然后跑一边0-1背包即可。这个排序很巧妙啊

AC代码:

#include<bits/stdc++.h>
using namespace std;
struct Node {int p,q,v;
} node[500 + 5];
int dp[5000 + 5];
bool cmp(const Node & a,const Node & b) {return a.q-a.p<b.q-b.p;//b.q+a.p>b.p+a.q
}
int main()
{int n,m;while(cin>>n>>m) {for(int i = 1; i<=n; i++) {scanf("%d%d%d",&node[i].p,&node[i].q,&node[i].v);}memset(dp,0,sizeof(dp));sort(node+1,node+n+1,cmp);for(int i = 1; i<=n; i++) {for(int j = m;j >=max(node[i].q,node[i].p); j--) {dp[j] = max(dp[j],dp[j-node[i].p ] + node[i].v);}}printf("%d\n",dp[m]);}return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/441876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 双通道 磁盘,HP MSA2012SA 双通道 磁盘阵列配置说明 for linuxoracle

HP MSA2012SA磁盘阵列配置说明说明&#xff1a;可以先安装HP服务器的操作系统&#xff0c;等安装完了以后再配置磁阵&#xff1b;1、安装好服务器的操作系统&#xff1b;该安装的包都安装上&#xff1b;2、磁盘阵列上架&#xff0c;加电&#xff0c;SAS线不用接服务器&#xff…

linux mariadb 乱码,MariaDB插入中文数据乱码解决过程

基本情况&#xff1a;MariaDB安装方式&#xff1a;yum乱码解决过程&#xff1a;1.查看当前数据库编码(登录数据库后)# show variables like character%;(上图为已经配置成功)2.如果结果不为上图则需要设置数据库配置文件•编辑 /etc/my.cnf.d/client.cnf 文件&#xff0c;添加如…

【nyoj - 890】 分东西 (水题 二进制)

题干&#xff1a; 分东西 时间限制&#xff1a;1000 ms | 内存限制&#xff1a;65535 KB 难度&#xff1a;1 输入 第一行输出一个数i表示有i组情况&#xff08;0<i<10&#xff09; 接下来的i行&#xff0c;每一行输入两个个数M(0<M<1000000)和N(0<N<2…

摩托罗拉为什么要限制自家linux手机,摩托罗拉为何在安卓手机大放异彩的时候,突然开始衰败了呢?...

摩托罗拉从一开始就走在了安卓的道路上&#xff0c;并且魅力四射&#xff0c;可以说一时间也是风光无比。对比诺基亚坚定的走向WP之路&#xff0c;这一点摩托罗拉没有走错。安卓当时的热门机中&#xff0c;摩托罗拉的里程碑系列可以算作是经典之作。销量也可以进入当年的前三。…

【POJ - 3624 】Charm Bracelet (dp,0-1背包裸题)

题干&#xff1a; Bessie has gone to the malls jewelry store and spies a charm bracelet. Of course, shed like to fill it with the best charms possible from the N (1 ≤ N ≤ 3,402) available charms. Each charm i in the supplied list has a weight Wi (1 ≤ Wi…

pta输出三角形字符阵列c语言,C语言l|博客园作业11

这个作业属于哪个课程C语言程序设计II这个作业要求在哪里链接我在这个课程的目标是掌握C语言以及熟练运用这个作业在哪个具体方面帮助我实现目标询问同学&#xff0c;百度&#xff0c;vs2019上的报错参考文献链接1.1 题目名6-1 统计某类完全平方数本题要求实现一个函数&#xf…

【nyoj - 252】 01串(简单dp)

题干&#xff1a; 01串 时间限制&#xff1a;1000 ms | 内存限制&#xff1a;65535 KB 难度&#xff1a;2 输入 第一行有一个整数n&#xff08;0<n<100&#xff09;,表示有n组测试数据; 随后有n行&#xff0c;每行有一个整数m(2<m<40)&#xff0c;表示01串的…

c语言乘法表 m*(9-i),C语言做九九乘法表.doc

C语言做九九乘法表#include void main(){int i,j,x;/*第一种*/printf("第一种&#xff1a;\n");for(i1;i<9;i){for(ji;j>1;j--){printf("%d*%d%d\t",i,j,i*j);}printf("\n");}/*第二种*/printf("第二种&#xff1a;\n");for(i9;…

*由易到难的讲解动态规划(精)

简介(入门) 什么是动态规划&#xff0c;我们要如何描述它? 动态规划算法通常基于一个递推公式及一个或多个初始状态。 当前子问题的解将由上一次子问题的解推出。使用动态规划来解题只需要多项式时间复杂度&#xff0c; 因此它比回溯法、暴力法等要快许多。 现在让我们通过一…

计划的主体部分应有哪些内容_本科论文查重查哪些部分内容?需要注意什么?...

作者&#xff1a;新风学术网关于本科毕业论文查重是查重哪些首先我们需要了解的是查重的依据&#xff0c;论文查重是建立在论文上的&#xff0c;我们先要知道一篇论文有哪些地方能用来检测&#xff0c;一篇论文它的组成是由封面、目录、前言、正文、参考文献、附录、页眉页脚等…

C语言 printf源码详解,从头一起学c语言(六)————printf函数的详解

这段时间很忙&#xff0c;更新的晚了&#xff0c;见谅。当然同样有今天我们的主角十分复杂&#xff0c;之前介绍了这个手记并非是面对新手的&#xff0c;而是我的复习手记。所以我们会讲头文件&#xff0c;或许有错误&#xff0c;如果有大手子看到&#xff0c;希望能够提出我的…

【PAT - 1014】福尔摩斯的约会(简单模拟)

题干&#xff1a; 大侦探福尔摩斯接到一张奇怪的字条&#xff1a;“我们约会吧&#xff01; 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很 快就明白了&#xff0c;字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”&#xff0c;因为前面两…

vla点转为lisp点_A股大涨53.70点,收复3400点,下周会继续大反弹吗?

在红周四的小惊喜之后&#xff0c;今天周五更是来了一个大涨的大惊喜&#xff0c;应验了杰克在8月27日复盘文章《以为A股会继续下跌&#xff0c;却上涨20.37点&#xff0c;明天会是大涨红周五吗》之中提出的观点——“今天上证指数的缩量反弹并不是说现在要止跌且启动反弹攻势了…

循环彩灯实验c语言程序,实验3LED指示灯循环控制.doc

实验3LED指示灯循环控制洛阳理工学院实验报告系部计算机系班级B100508学号姓名王彪课程名称单片机原理及应用实验日期2012.5.26实验名称LED指示灯循环控制成绩【实验目的】熟悉uVision3编译软件&#xff0c;掌握C51编程与调试【实验条件】如下图为LED指示灯循环控制电路原理图。…

我的第一个Python程序(简单的用户名密码登录程序)

话说啊&#xff0c;所谓的C语言1000行&#xff0c;Java100行&#xff0c;Python20行呢。。。光一个登录就30行了。、 一个输入用户名密码的登录程序&#xff1a; init_usrnameinput(Please enter initial username:) init_passwordinput(Please enter initial password:) pr…

startuml动态模型工具_动态面板模型估计方法简介以及stata应用

动态面板模型最主要的特征是在控制变量中加入了y的滞后项&#xff0c;其中 代表控制变量, 代表固定效应&#xff0c; 代表残差项由于加入了y的滞后项导致了采用常用固定效应估计方法会导致参数估计的不一致性&#xff0c;因此需要采用其他的估计方法。本文主要分为4个部分&…

c语言编程三问三答,c语言程序编程

优质回答 回答者&#xff1a;柚子老弟啊这个是个初学者犯的常见错误,意思是说在一个项目里定义了两个主函数,所以报主函数重复定义了.解决办法重新建一个工程.-----------------------------------------------------------------回答者&#xff1a;Ryan锤#includeint fun(int …

Python2和Python3中raw_input( )和input( )区别(附代码)

备注&#xff1a; 1、在python2.x中raw_input( )和input( )&#xff0c;两个函数都存在&#xff0c;其中区别为 raw_input( )---将所有输入作为字符串看待&#xff0c;返回字符串类型 input( )-----只能接收“数字”的输入&#xff0c;在对待纯数字输入时具有自己的特性&#x…

最有效的萨克斯弱音器_1990到2016年全球自杀数据公布,中国自杀死亡率下降最显著!...

最新一期的BMJ杂志上发表的一篇题为《Global, regional, and national burden of suicide mortality 1990 to 2016: systematic analysis for the Global Burden of Disease Study 2016》的研究&#xff0c;对1990到2016年全球自杀疾病负担进行了分析&#xff0c;让我们一起来看…

C语言编译不等于,为什么嵌入式C语言中的size不等于所有成员size之和

结构体在C语言程序开发中&#xff0c;是不可或缺的语法。不过&#xff0c;相信不少C语言初学者遇到过这样的问题&#xff1a;为什么结构体的 size 有时不等于它的所有成员的 size 之和呢&#xff1f;C语言结构体大小等于它的所有成员大小之和吗&#xff1f;举例来说&#xff0c…