您的位置:首页 > 其它

第二天 POJ3125

2016-03-21 21:26 169 查看
Source Code
Problem:
3125
 User:
newer2015
Memory: 740K Time: 16MS
Language: G++ Result: Accepted
Source Code
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<algorithm>
#include<queue>
#define MAX 1000
using namespace std;

class point
{
public:
int key;
int priority;
point(){key=0;priority=0;}
};

point* p=new point[MAX];
int num;
int imkey;

int test()
{
int temp=-1;
int k=0;
int i=0,count=1;
int maxp=0;
int max_priority[MAX];
point temppoint;
queue<point> q;
cin>>num>>imkey;

for(i=0;i<num;i++)
{
p[i].key=i;
cin>>p[i].priority;
max_priority[i]=p[i].priority;
// printf("%d\n",max_priority[i]);
q.push(p[i]);
}
//printf("%d\n",max_priority);
sort(max_priority,max_priority+num);
k=num-1;
maxp=max_priority[k];
// printf("%d\n",maxp);
for(;;)
{
if(q.front().priority<maxp)
{     temppoint=q.front();
//printf("%d",temppoint.key);
q.pop();
q.push(temppoint);
}
else
{
if(q.front().key==imkey)
{
printf("%d\n",count);
break;
}
else
{
q.pop();
k=k-1;
maxp=max_priority[k];
count++;
}
}
}
}

int main()
{
int i;
cin>>i;
while(i!=0)
{
test();
i--;
}
return 0;
}
打印机这个题还比较简单,逐渐掌握了poj算法实现的基本思路方法,对于算法细节的分析直接决定了answer的正确与否,

此道题特殊注意一下优先级,最大优先级出队以后应该改变最大优先级的值,因此需要引入一个排序好的优先级数组。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: