P4053 [JSOI2007]建筑抢修

Miku

贪心

按照时间从前往后尽可能的修

如果能修就修,修不了的话

我们可以选择撤掉一个以前修的腾出时间来,但是,腾出两个显然更蠢

那么,显然无论腾不腾,截止到此建筑,能修的数量最多一定()

由此观之,应该把已修的最大的取出来,然后进行比较,放进小的,扔掉大的,来为后面腾时间

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std;
priority_queue <long long >q  ;
long long n;
struct bu{
    long long ne;
    long long boom;
}buil[150001];
bool cmp(bu x,bu y){
    if(x.boom==y.boom)
    return x.ne<y.ne;
    return x.boom<y.boom;

}
long long now;
long long s;
int main(){
    scanf("%lld",&n);
    for(long long i=1;i<=n;++i){
        scanf("%lld%lld",&buil[i].ne,&buil[i].boom);
    }
    sort(buil+1,buil+n+1,cmp);
    for(long long i=1;i<=n;++i){
        if(buil[i].ne+now<=buil[i].boom){
            q.push(buil[i].ne);
            now+=buil[i].ne;
            s++;
            continue;
        }else{
            if(!q.empty()){
                if(q.top()>buil[i].ne){
                    now=now+buil[i].ne-q.top();
                    q.pop();
                    q.push(buil[i].ne);
                }else{
                    continue;
                }
            }
        }
    }
    cout<<s;
    return 0;
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇