您的位置:首页 > 产品设计 > UI/UE

HDU-1908-Double Queue

2014-08-10 15:21 302 查看
在博弈专项练习做到这个题~ 其实就是银行排队服务的一个题,然后这个题有2种处理方式,1代表请求,2代表现在处理排队队列中优先级最高的,3代表现在处理排队队列中优先级最低的。我用的STL vector+二分查找的

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int maxn=1e6+1000;
struct Request
{
int id;
int val;
Request(int sid,int sval)
{
id=sid;
val=sval;
}
bool operator < (const Request &a)const
{
return val<a.val;
}
};
vector<Request> r;
vector<Request>::iterator it;
int main()
{
while(1)
{
int op;
scanf("%d",&op);
if(op==0)
break;
if(op==1)
{
int id,w;
scanf("%d%d",&id,&w);
it=lower_bound(r.begin(),r.end(),Request(id,w));
r.insert(it,Request(id,w));
}
else if(op==2)
{
if(r.size()==0)
{
printf("0\n");
continue;
}
printf("%d\n",r[r.size()-1].id);
r.erase(r.begin()+r.size()-1);
}
else
{
if(r.size()==0)
{
printf("0\n");
continue;
}
printf("%d\n",r[0].id);
r.erase(r.begin());
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: