UVA 1203 Argus(优先队列)

来源:互联网 发布:淘宝40平装修 编辑:程序博客网 时间:2024/06/03 17:14
如果枚举全部放进队列,空间会爆,所以出一个进一个。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;#define rep(i,a,b) for(int i=(a);i<=(b);i++)#define ss(x) scanf("%d",&x)const int maxn=1000+10;int k,len;int num[maxn],p[maxn];struct node{    int value,time,period;    bool operator < (const node &rhs) const {        if(time!=rhs.time) return time>rhs.time;        return value>rhs.value;    }};priority_queue<node> pq;int main(){    while(!pq.empty()) pq.pop();    len=0;    char cmd[30];    while(true){        scanf("%s",cmd);        if(cmd[0]=='#') break;        int x,y;        ss(x);ss(y);        pq.push((node){x,y,y});    }    ss(k);    rep(i,1,k){        node tmp=pq.top();pq.pop();        cout<<tmp.value<<endl;        pq.push((node){tmp.value,tmp.time+tmp.period,tmp.period});    }    return 0;}

0 0
原创粉丝点击