zoukankan      html  css  js  c++  java
  • hdu 1896 优先队列的应用

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1896

    题目大意:

    n个石头,每个在位置p,一个属性d。从最左边开始往右走,遇到一个石头,如果是第奇数次遇到,就把他往前仍d米,偶数次遇到就越过。问最后最远的石头距离起点多少米

    思路:考虑用优先队列,如果是第奇数个石头,就修改其位置,入队列,否则,出对列;

    View Code
     1 #include<iostream>
     2 #include<queue>
     3 using namespace std;
     4 
     5 struct Point{
     6     int pos;
     7     int dis;
     8     bool operator < (const Point  p) const {
     9         if(p.pos!=pos)
    10             return p.pos<pos;
    11         return p.dis<dis;
    12     }
    13 };
    14 
    15 priority_queue<Point>Q;
    16 
    17 int main(){
    18     int _case;
    19     scanf("%d",&_case);
    20     while(_case--){
    21         int n;
    22         scanf("%d",&n);
    23         while(!Q.empty())Q.pop();
    24         Point p,q;
    25         while(n--){
    26             scanf("%d%d",&p.pos,&p.dis);
    27             Q.push(p);
    28         }
    29         int result=0,count=1;
    30         while(!Q.empty()){
    31             if(count&1){
    32                 q=Q.top();
    33                 Q.pop();
    34                 q.pos+=q.dis;
    35                 result=q.pos;
    36                 Q.push(q);
    37             }else 
    38                 Q.pop();
    39             count++;
    40         }
    41         printf("%d\n",result);
    42     }
    43     return 0;
    44 }
  • 相关阅读:
    数据表格
    数据表格
    数据表格
    布局
    表单
    表单
    Java知识点梳理——继承
    Java知识点梳理——抽象类和接口
    面试心得与总结—BAT、网易、蘑菇街
    Java知识点梳理——多态
  • 原文地址:https://www.cnblogs.com/wally/p/2945454.html
Copyright © 2011-2022 走看看