第二天 POJ3125

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的正确与否,
    此道题特殊注意一下优先级,最大优先级出队以后应该改变最大优先级的值,因此需要引入一个排序好的优先级数组。
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值