• UVALive 3135阿格斯


    UVALive 3135§

    【题目描述】:阿格斯

    有一种指令Q  Rgister(编号,周期),指令每个周期震荡一次。

    【算法分析】:关键之处:周期不同。这道题用优先队列模拟,而且注意优先队列定义operator<和排序方式相反。

      1 #include<iostream>
      2 
      3 #include<stdio.h>
      4 
      5 #include<string.h>
      6 
      7 #include<algorithm>
      8 
      9 #include<stdlib.h>
     10 
     11 #include<math.h>
     12 
     13 #include<queue>
     14 
     15 #include<vector>
     16 
     17 #include<map>
     18 
     19 #define MAXN 1100+10
     20 
     21 #define MAXM 20000+5
     22 
     23 #define oo 9556531
     24 
     25 #define eps 0.000001
     26 
     27 #define PI acos(-1.0)//这个精确度高一些
     28 
     29 #define REP1(i,n) for(int i=0;i<(n);i++)
     30 
     31 #define REP2(i,n) for(int i=1;i<=(n);i++)
     32 
     33 using namespace std;
     34 
     35  
     36 
     37 struct Argus
     38 
     39 {
     40 
     41     int Q;//编号
     42 
     43     int V;//间隔
     44 
     45      int T;//当前时间
     46 
     47     bool operator <(const Argus& x) const{
     48 
     49         if (T==x.T) return Q>x.Q;else return T>x.T;//优先级高的先出队列,开始写的小于,why/?
     50 
     51     }
     52 
     53 };
     54 
     55 priority_queue<Argus> qu;
     56 
     57 char s[15];
     58 
     59 int main()
     60 
     61 {
     62 
     63     while(cin>>s)
     64 
     65     {
     66 
     67         if (s[0]=='R')
     68 
     69         {
     70 
     71             int NUM,VAL;
     72 
     73             cin>>NUM>>VAL;
     74 
     75             Argus newa=(Argus){NUM,VAL,VAL};//注意第一次开始时间是周期
     76 
     77             qu.push(newa);
     78 
     79         }else//开始读命令
     80 
     81         {
     82 
     83             int k;
     84 
     85             cin>>k;
     86 
     87             while(k--)
     88 
     89             {
     90 
     91                 Argus a=qu.top();
     92 
     93                 cout<<a.Q<<endl;
     94 
     95 //                cout<<a.V<<endl;
     96 
     97                 a.T=a.T+a.V;
     98 
     99                 qu.pop();
    100 
    101                 qu.push(a);
    102 
    103             }
    104 
    105             while(!qu.empty()) qu.pop();//清空
    106 
    107         }
    108 
    109     }
    110 
    111     return 0;
    112 
    113 }
    114 
    115  
     【关键词】:优先队列的使用
  • 相关阅读:
    如何让create-react-app锦上添花,满足实际需求?
    《漫画算法》笔记-下篇
    《漫画算法》笔记-上篇
    react + typescript 学习
    node http 模块 常用知识点记录
    vue 相关技术文章集锦
    读后感:数据结构与算法JavaScript描述
    css 揭秘-读书笔记
    vue-textarea 自适应高度
    消除浏览器对input的自动填充
  • 原文地址:https://www.cnblogs.com/little-w/p/3525290.html
Copyright © 2020-2023  润新知