zoukankan      html  css  js  c++  java
  • luogu_2107【题解】

      原题:https://www.luogu.org/problemnew/show/P2107

      题目有两个限制条件,一个是距离,一个是时间。

      距离先不用管,排完序按顺序来就可以,近的总比远的更优。

      先把所有超m范围的去掉。

      耗费时间则是越短的越划算,越长的越浪费。所以可以选择大根堆,把时间长短都存入堆中。

      加入超了是可以翻悔的,取堆顶,把最大的翻悔了,路程不用管,因为你已经过之前的了。

      不要忘了每次更新答案!不一定越往后越优,每次都要取一个max,我第一次这么忘了结果WA了三个点。

      代码如下:

    #include<bits/stdc++.h>
    #define pp(x) printf("%lld",x)
    #define rr(x) scanf("%lld",&x)
    #define ll long long
    using namespace std;
    priority_queue<long long> q; 
    ll n,m,tot;
    ll sum,ans,ser;
    struct node{
        ll x,t;
    }s[100001];
    inline bool cmp1(node a,node b){
        return a.x<b.x;
    }
    int main()
    {
        rr(n);rr(m);
        for(int i=1;i<=n;i++){
            ll x,y;
            rr(x);rr(y);
            if(x<=m&&y<=m){
                s[++tot].x=x;
                s[tot].t=y;
            }
        }
        sort(s+1,s+tot+1,cmp1);
        for(int i=1;i<=tot;i++){
            sum+=s[i].t+s[i].x-s[i-1].x;
            ans++;
            q.push(s[i].t);
            while(sum>m){
                sum-=q.top();
                q.pop();
                ans--;
            }
            ser=max(ans,ser);
        }
        pp(ser);puts("");
        return 0;
    }
  • 相关阅读:
    QT解析和组装json
    linux下磁盘存储空间不足
    linux下的QT打包方法
    linux下编译protobuf
    linux下编译opencv
    linux下的qt串口通信
    QT执行shell脚本及linux指令相关
    windows下QT打包
    启动zookeeper却没有进程
    Linux命令
  • 原文地址:https://www.cnblogs.com/ChrisKKK/p/10778899.html
Copyright © 2011-2022 走看看