[CF19B]Checkout Assistant

题目描述

Bob 来到一家现购自运商店,将 n 件商品放入了他的手推车,然后到收银台 付款。每件商品由它的价格 pi 和收银员扫描它的时间 ti 秒定义。当收银员正在扫 描某件商品时,Bob 可以从他的手推车中偷走某些其它商品。Bob 需要恰好 1 秒 来偷走一件商品。Bob 需要付给收银员的最少钱数是多少?请记住,收银员扫描 商品的顺序由 Bob 决定。

输入格式

输入第一行包含数 n(1≤n≤2000)。接下来 n 行每行每件商品由 一对数 ti,ci(0≤ti≤2000,1≤ci≤10^9)描述。如果 ti 是 0,那么当收银员扫描 商品i时,Bob 不能偷任何东西。

输出格式

输出一个数字——Bob需要支付的最小金额是多少。

样例输入

4
2 10
0 20
1 5
1 3

样例输出

8

题解

这道题可以看成是一个背包问题来做即可。
我们将总时间看成是将所有物品都交给收银员扫描的情况下需要的时间,每一件物品的体积v[i]看作是偷取这件物品所需要的时间+扫描时间,因为我们选取一件物品后这件物品就不会再被扫描了。这样我们就可以得到我们能够赚取的最大金额,再用所有物品的总价值减去这个最大金额就可以得到答案了。

#include<bits/stdc++.h>
#define maxn 5005
using namespace std;
inline char get(){
    static char buf[300000],*p1=buf,*p2=buf;
    return p1==p2 && (p2=(p1=buf)+fread(buf,1,300000,stdin),p1==p2)?EOF:*p1++; 
}
inline long long read(){
    register char c=get();register long long f=1,_=0;
    while(c>'9' || c<'0')f=(c=='-')?-1:1,c=get();
    while(c<='9' && c>='0')_=(_<<3)+(_<<1)+(c^48),c=get();
    return _*f;
}
long long n;
long long t[maxn],c[maxn];
//?????????? 
long long V,C;
long long v[maxn];
long long dp[2005*4005];
int main(){
    //freopen("1.txt","r",stdin);
    n=read();
    long long out=0;
    for(register long long i=1;i<=n;i++)t[i]=read(),c[i]=read(),v[i]=t[i]+1,V+=t[i],C+=c[i];
    //V+=n;
    long long note=0;
    for(register long long i=1;i<=n;i++){
        for(register int j=V;j>=v[i];j--){
            dp[j]=max(dp[j],dp[j-v[i+note]]+c[i+note]);
            out=max(dp[j],out);
        }
    }
    cout<<C-out;
    return 0;
}

但是事实上,这样的话我们会发现dp的时间复杂度过高,在第28组数据会导致超时。因此我们舍去转化的过程,直接求一个至少装至n的背包所负载的最小价值就可以了

#include<bits/stdc++.h>
#define maxn 5005
using namespace std;
inline char get(){
    static char buf[300000],*p1=buf,*p2=buf;
    return p1==p2 && (p2=(p1=buf)+fread(buf,1,300000,stdin),p1==p2)?EOF:*p1++; 
}
inline long long read(){
    register char c=get();register long long f=1,_=0;
    while(c>'9' || c<'0')f=(c=='-')?-1:1,c=get();
    while(c<='9' && c>='0')_=(_<<3)+(_<<1)+(c^48),c=get();
    return _*f;
}
long long n;
long long t[maxn],c[maxn];
//?????????? 
long long V;
long long dp[4005];
int main(){
    //freopen("1.txt","r",stdin);
    n=read();
    long long out=1e18+1;
    for(register long long i=1;i<=n;i++)t[i]=read(),c[i]=read(),t[i]+=1,V=max(V,t[i]);
    V+=n;
    for(register int i=1;i<=V;i++)dp[i]=1e18+1;
    dp[0]=0;
    for(register int i=1;i<=n;i++){
        for(register int j=V;j>=t[i];j--){
            dp[j]=min(dp[j],dp[j-t[i]]+c[i]);
            if(j>=n)out=min(dp[j],out);
            //cout<<dp[j]<<endl;
        }
    }
    cout<<out;
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容

  • 这个不错分享给大家,从扣上看到的,就转过来了 《电脑专业英语》 file [fail] n. 文件;v. 保存文...
    麦子先生R阅读 6,560评论 5 24
  • 这里的词汇不是现在流行的严格意义层面的翻译,而是一种带有想象力的对照。有元音或者辅音相同的假定的应用;有事物的联系...
    共通语言阅读 4,653评论 0 1
  • 没想到去年六月就再也没画过的示意图昨天捡起来还是很快的,当然还是要一条线一条线地复习,也用了很多草稿纸,不过用了一...
    Vivian_n阅读 167评论 0 0
  • 今天的郑州,秋雨绵绵,雨不大,但在雨地里是会淋湿衣服的。 昨天天气预报说,郑州不但有雨,局部和部分山区有小到中雪,...
    疗心斋阅读 304评论 0 1
  • 睁开眼,照镜子,“美女,早上好,我爱你[嘴唇]”,感觉美好的一天开始了! 认真的读了师父的十大人生哲学,每次读都很...
    小冯老师_0c22阅读 288评论 0 1