• BZOJ1747 [Usaco2005 open]Expedition 探险


    首先我们可以发现如果错过了一个加油站,而继续往前走的时候没有油了,可以再假装之前经过加油站的时候加过油

    于是我们维护一个大根堆,表示错过的加油站是哪些,每当没有油的时候从堆顶取出最大值加上去即可

     1 /**************************************************************
     2     Problem: 1747
     3     User: rausen
     4     Language: C++
     5     Result: Accepted
     6     Time:20 ms
     7     Memory:916 kb
     8 ****************************************************************/
     9  
    10 #include <cstdio>
    11 #include <algorithm>
    12 #include <queue>
    13  
    14 using namespace std;
    15 const int N = 1e4 + 5;
    16  
    17 inline int read();
    18  
    19 struct data {
    20     int w, add;
    21      
    22     inline void get() {
    23         w = read(), add = read();
    24     }
    25      
    26     inline bool operator < (const data &d) const {
    27         return w > d.w;
    28     }
    29 } a[N];
    30  
    31 int n, tot, ans;
    32 priority_queue <int> h;
    33  
    34 int main() {
    35     int i;
    36     n = read();
    37     for (i = 1; i <= n; ++i) a[i].get();
    38     a[0].w = read(), tot = read();
    39     sort(a + 1, a + n + 1);
    40     a[n + 1].w = 0;
    41     for (i = 1; i <= n + 1; ++i) {
    42         tot -= (a[i - 1].w - a[i].w);
    43         while (tot < 0 && !h.empty()) {
    44             ++ans;
    45             tot += h.top(), h.pop();
    46         }
    47         if (tot < 0) {
    48             puts("-1");
    49             return 0;
    50         }
    51         h.push(a[i].add);
    52     }
    53     printf("%d
    ", ans);
    54     return 0;
    55 }
    56  
    57 inline int read() {
    58     static int x;
    59     static char ch;
    60     x = 0, ch = getchar();
    61     while (ch < '0' || '9' < ch)
    62         ch = getchar();
    63     while ('0' <= ch && ch <= '9') {
    64         x = x * 10 + ch - '0';
    65         ch = getchar();
    66     }
    67     return x;
    68 }
    View Code
  • 相关阅读:
    诸神之眼-Nmap(精版,更新中。。。)
    workerman-chat聊天室
    Mysql记录事本
    网站标题、描述、关键词怎么设置?
    什么是谷歌SEO?
    图片加载之性能优化
    前端实现图片懒加载(lazyload)的两种方式
    HTML`CSS_网站页面不同浏览器兼容性问题解决
    从输入url到显示页面,都经历了什么
    什么是mvvm mvc是什么区别 原理
  • 原文地址:https://www.cnblogs.com/rausen/p/4480575.html
Copyright © 2020-2023  润新知