HDOJ(HDU).3466 Dividing coins ( DP 01背包 无后效性的理解)
HDOJ(HDU).3466 Dividing coins ( DP 01背包 无后效性的理解)
题意分析
要先排序,在做01背包,否则不满足无后效性,为什么呢? 
等我理解了再补上。
代码总览
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define nmax 505
#define nn 505*100
using namespace std;
struct item{
    int p;
    int q;
    int v;
    int rate;
}a[nmax];
int dp[nn];
bool cmp(item x, item y)
{
    return x.rate<y.rate;
}
int main()
{
    //freopen("in.txt","r",stdin);
    int N,M;
    while(scanf("%d%d",&N,&M)!= EOF){
        memset(dp,0,sizeof(dp));
        for(int i = 1; i<= N;++i) {scanf("%d%d%d",&a[i].p,&a[i].q,&a[i].v); a[i].rate = a[i].q - a[i].p;}
        sort(a+1,a+1+N,cmp);
        for(int i = 1; i<=N;++i){
            for(int j =M;j>=a[i].q;--j)
                dp[j] = max(dp[j],dp[j-a[i].p]+a[i].v);
        }
        printf("%d\n",dp[M]);
    }
    return 0;
}HDOJ(HDU).3466 Dividing coins ( DP 01背包 无后效性的理解)的更多相关文章
- HDOJ(HDU).2546 饭卡(DP 01背包)
		HDOJ(HDU).2546 饭卡(DP 01背包) 题意分析 首先要对钱数小于5的时候特别处理,直接输出0.若钱数大于5,所有菜按价格排序,背包容量为钱数-5,对除去价格最贵的所有菜做01背包.因为 ... 
- HDOJ(HDU).2602 Bone Collector (DP 01背包)
		HDOJ(HDU).2602 Bone Collector (DP 01背包) 题意分析 01背包的裸题 #include <iostream> #include <cstdio&g ... 
- UVA 562 Dividing coins(dp + 01背包)
		Dividing coins It's commonly known that the Dutch have invented copper-wire. Two Dutch men were figh ... 
- uva 562 Dividing coins(01背包)
		Dividing coins It's commonly known that the Dutch have invented copper-wire. Two Dutch men were f ... 
- hdu 1561【树形dp+01背包】
		http://acm.hdu.edu.cn/showproblem.php?pid=1561 很容易想到如果是要攻克v城需要先攻克u城的话,可以建u到v的边.但是如果能够直接攻克u城呢?无边可建,这样 ... 
- UVA 562 Dividing coins (01背包)
		题意:给你n个硬币,和n个硬币的面值.要求尽可能地平均分配成A,B两份,使得A,B之间的差最小,输出其绝对值.思路:将n个硬币的总价值累加得到sum, A,B其中必有一人获得的钱小于等于sum/2 ... 
- HDU 3466 Proud Merchants(0-1背包)
		http://acm.hdu.edu.cn/showproblem.php?pid=3466 题意: 最近,iSea去了一个古老的国家.在这么长的时间里,它是世界上最富有和最强大的王国.结果,这个国家 ... 
- UVA 562 Dividing coins【01背包 / 有一堆各种面值的硬币,将所有硬币分成两堆,使得两堆的总值之差尽可能小】
		It's commonly known that the Dutch have invented copper-wire. Two Dutch men were fighting over a nic ... 
- HDU 3466 Proud Merchants(01背包)
		这道题目看出背包非常easy.主要是处理背包的时候须要依照q-p排序然后进行背包. 这样保证了尽量多的利用空间. Proud Merchants Time Limit: 2000/1000 MS (J ... 
随机推荐
- Chromium添加一段新字符串
			参考:https://groups.google.com/a/chromium.org/forum/#!searchin/chromium-dev/tclib%7Csort:relevance/chr ... 
- JAVA基础学习之路(五)数组的定义及使用
			什么是数组:就是一堆相同类型的数据放一堆(一组相关变量的集合) 定义语法: 1.声明并开辟数组 数据类型 数组名[] = new 数据类型[长度]: 2.分布完成 声明数组:数据类型 数组名 [] = ... 
- 数据库Mysql的学习(八)-储存过程和事务和导入导出
			储存过程 DELIMITER // CREATE PROCEDURE pro1() BEGIN SELECT book_id,book_name,category FROM bookinfo t1 J ... 
- sparkML原始数据转换成label-features方法
			数据1:kaggle-旧金山犯罪分类数据 格式如下: Dates,Category,Descript,DayOfWeek,PdDistrict,Resolution,Address,X,Y -- :: ... 
- python—IDLE的shell上下翻看历史
			Alt+p和Alt+n,分别向上(history previous)和向下(history next)调出使用过的历史命令. 
- Java面试知多少
			1.谈谈&和&&的区别 1.&&是短路判断,在与其他语句一起判断时,第一个条件为假就不判断剩下的条件: & 需要判断所有的条件 2.&是 ... 
- HTML5+Bootstrap 学习笔记 1
			HTML <header> 标签 <header> 标签定义文档的页眉(介绍信息),是 HTML 5 中的新标签. 参考资料: HTML <header> 标签 h ... 
- df -h 卡住
			mount 检查是否有挂载nfs的分区 网络挂载 如果有请umount -l /相应目录 umount -l 10.74.82.205:/letv/fet/nfs ... 
- StrBlobPtr类——weak_ptr访问vector元素
			#include <iostream> #include <memory> #include <string> #include <initializer_l ... 
- Alpha发布文案加美工展示
			目录 团队简介 项目进展 组内分工 队员总结 后期计划 一.团队简介 二.项目进展 从选题发布到今天的Alpha发布,我们团队经历了许许多多的磨难.我们最终设计了如下的功能:首页.班级.个人.更多.打 ... 
