zoukankan      html  css  js  c++  java
  • Gym 100247I Meteor Flow(优先队列)

    https://vjudge.net/problem/Gym-100247I

    题意:
    有一艘飞船,现在有n颗流星坠落会攻击到飞船,每颗流星会在t时刻降落,对飞船造成d的伤害,飞船会有一个保护盾,初始值为0,每单位时间会+1,受到伤害后保护盾会减去相应的值。飞船上面还有加农炮,发射后可以避免一颗流星的伤害,问在保护盾不受到破坏的情况下(<0)最少需要发射几次加农炮。

    思路:

    尽量使用加农炮去避免伤害较大的流星。

    按照时间顺序将所有流星的伤害值依次放入优先队列,如果到某颗流星时保护盾遭到破坏了,那么就从优先队列中取出之前的伤害最大的流星,此时用加农炮免除它的伤害。

     1 #include<cstdio>
     2 #include<queue>
     3 using namespace std;
     4 const int maxn = 200000+5;
     5 
     6 int n;
     7 
     8 priority_queue<int> q;
     9 
    10 int main()
    11 {
    12     //freopen("in.txt","r",stdin);
    13     scanf("%d",&n);
    14     int pre = 0;
    15     int ans = 0;
    16     int defend = 0;
    17     for(int i=1;i<=n;i++)
    18     {
    19         int t,d;
    20         scanf("%d%d",&t,&d);
    21         q.push(d);
    22         defend += t-pre;
    23         pre = t;
    24         while(defend < d)
    25         {
    26             int tmp = q.top(); q.pop();
    27             defend += tmp;
    28             ans++;
    29         }
    30         defend -= d;
    31     }
    32     printf("%d
    ",ans);
    33     return 0;
    34 }
  • 相关阅读:
    数据库四种事务隔离级别
    JAVA自定义查询策略
    JAVA分页工具类
    Git常用指令
    TDH-大数据基础
    TDH-ssh免密登录
    TDH-search汇报理解
    TDH-常见运维指令
    pyecharts 0.5 visualmap 显示精度precision到小数
    14-influence 图机器学习之网络的影响力最大化
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/8051371.html
Copyright © 2011-2022 走看看