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的正确与否,
此道题特殊注意一下优先级,最大优先级出队以后应该改变最大优先级的值,因此需要引入一个排序好的优先级数组。