01背包水题篇之HDU3466——Proud Merchants

这是个好题,菜鸟刚学dp,这题把我以前的想法全都给完完全全的颠覆了。其实是自己没了解无后效性的概念。

然后我去开开心心滴跑去问队长:”队长,队长,怎么理解动归的无后效性啊???“

学长很深沉滴对我说:”做多了就会了“

"噢噢”(好吧)

然后学长又补了句:“能构成有向无环图的都能用DP搞."

我心里想:”队长就知道搞妹~~~。“

默默去翻小白书看看DAG去了。

为了搞清楚这题怎么写,操了度娘千百遍,还是没搞定。。。 肿么办,弱菜这么水怎么破

又是贴代码环节(好讨厌啊,压根就不理解为毛线 要对 q-p按从小到大排序啊,虽然大牛都说是因为无后效性的原因,我只能说:不明觉厉啊,有木有,德玛西亚~)

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int dp[5001];
struct node
{
    int p,q,v;
}p[501];
bool cmp(node x,node y)
{
    return x.q-x.p<y.q-y.p;
}
int main()
{
    int n,m;
    while(cin>>n>>m){
        for(int i=0;i<n;i++){
            scanf("%d%d%d",&p[i].p,&p[i].q,&p[i].v);
        }
        sort(p,p+n,cmp);//排完序就是赤裸裸的01了
        memset(dp,0,sizeof dp);
        for(int i=0;i<n;i++){
            for(int j=m;j>=p[i].q;j--){
                dp[j]=max(dp[j],dp[j-p[i].p]+p[i].v);
            }
        }
        cout<<dp[m]<<endl;
    }
    return 0;
}<span style="color:#66cccc;">
</span>

01背包水题篇之HDU3466——Proud Merchants,布布扣,bubuko.com

时间: 2024-12-19 15:28:10

01背包水题篇之HDU3466——Proud Merchants的相关文章

01背包水题篇之 HDU2955——Robberies

原来是想dp[i],表示不被抓概率为i所能抢到的最大钱(概率1-100) 后来看了别人的博客是dp[i]表示抢了i钱最大的不被抓概率,嗯~,弱菜水题都刷不动. 那么状态转移方程就是 dp[i]=max(dp[i],dp[i-money]*p),初始化dp(0~maxn)为0,dp[0]=1(1毛钱都没抢你抓个毛线啊,哥是良民~) 又是贴代码环节~ <span style="font-size:18px;">#include<iostream> #include&

01背包水题篇之HDU1864——最大报销额

这个题目好果的01,只要把每个数乘以100,就能解决下标的问题了 继续贴代码环节(自己的代码好丑啊~~~) <span style="font-size:18px;">#include<iostream> #include<algorithm> #include<cstring> #include<cstdio> #define maxn 3100000 using namespace std; int dp[maxn]; i

hdu2955Robberies 01背包水题

//给出每个银行的钱数和被抓的概率, //问在被抓概率小于p的情况下得到的钱数最多为多少 //直接以钱数为容量,以(1-pi)为为价值01背包就行 #include<cstdio> #include<cstring> #include<iostream> using namespace std ; const int maxn = 110 ; const int maxm = maxn*maxn ; double dp[maxm] ; int main() { int

NYOJ 49 开心的小明(经典01背包水题)

开心的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N 元钱就行".今天一早小明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N 元.于是,他把每件物品规定了一个重要度,分为5 等:用整数1~5 表示,第5 等最重要.他还从因特网上查到了每件物品的价格(都是整数元).

1085 背包问题(0-1背包模板题)

1085 背包问题(0-1背包模板题)(51NOD基础题) 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2--Wn(Wi为整数),与之相对应的价值为P1,P2--Pn(Pi为整数).求背包能够容纳的最大价值. Input 第1行,2个整数,N和W中间用空格隔开.N为物品的数量,W为背包的容量.(1 <= N <= 100,1 <= W <= 10000) 第2 - N + 1行,每行

POJ 3624 Charm Bracelet(01背包裸题)

Charm Bracelet Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 38909   Accepted: 16862 Description Bessie has gone to the mall's jewelry store and spies a charm bracelet. Of course, she'd like to fill it with the best charms possible fro

HDU 2602 Bone Collector(01背包裸题)

Bone Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 60469    Accepted Submission(s): 25209 Problem Description Many years ago , in Teddy’s hometown there was a man who was called “Bo

hihoCoder #1038 : 01背包(板子题)

#1038 : 01背包 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 且说上一周的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励的时刻了! 小Ho现在手上有M张奖券,而奖品区有N件奖品,分别标号为1到N,其中第i件奖品需要need(i)张奖券进行兑换,同时也只能兑换一次,为了使得辛苦得到的奖券不白白浪费,小Ho给每件奖品都评了分,其中第i件奖品的评分值为value(i),表示他对这件奖品的喜好值.现在他想知道,凭借他手上的这

hdu 2955 Robberies (01背包好题)

Robberies Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 31769    Accepted Submission(s): 11527 Problem Description The aspiring Roy the Robber has seen a lot of American movies, and knows that