5-7 UVA 12100 Printer Queue打印队列

来源:互联网 发布:襄阳seo云优化 编辑:程序博客网 时间:2024/05/18 02:29

大致题意:

输入一定数量的打印任务,并伴随有优先级,按优先级从大到小的顺序打印,从队首(位置为0)开始打印,发现队后存在一个打印任务的优先级高于自己,则自己放于队后,先打印优先级高的。

整体思路:

不用想,根据题意,存数据(优先级)用肯定用queue存(当然有很多方法,这是最好想的!),但queue不能根据优先级进行排序,所以要在找一个"容器"能存的数据自动排序,优先队列priority_queue最好好(set对于队首和队尾的操作不如queue好!),所以在把优先级存入第一个queue的同时,也把优先级存到优先队列中,让优先队列里面的数据,优先级根据整数大小进行排序,一个一个对比,不一样的话 ,直接放到队尾,否则打印,sum++。

有个技巧,用m来记录标记位置的动态取向,直到输出标记位置时,跳出循环输出sum!



#include<cstdio>#include<queue>#include<vector>using namespace std;int main(){    int T;    scanf("%d",&T);    while(T--){        priority_queue<int,vector<int> >pq;        queue<int>q;        int n,m,x,sum = 0;        scanf("%d%d",&n,&m);        for (int i = 0; i < n; ++i){            scanf("%d",&x);            pq.push(x);            q.push(x);        }        for (;;){            if (pq.top() == q.front()){                sum++;                if (!(m--))break;                pq.pop();q.pop();            }            else {                if (!(m--))m = q.size() - 1;                q.push(q.front());                q.pop();            }        }        printf("%d\n",sum);    }    return 0;}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 qq空间无法查看怎么办 华为手机电池不耐用怎么办 内内被动过怎么办 hp电脑开机黑屏怎么办 网上开店快递费怎么办 保温杯外壳掉漆怎么办 拖鞋前面磨脚怎么办 塑料拖鞋磨脚怎么办 路由器进不去设置界面怎么办 手机号丢了微信登不上怎么办 电脑总是闪黑屏怎么办 支付宝破产钱怎么办 淘宝号码注册过怎么办 农行k宝怎么办信用卡 电脑页面无法显示怎么办 对方银行停止收款怎么办 淘宝东西买太多怎么办 淘宝号黑号了怎么办… 中通包裹异常怎么办 包裹退回去了怎么办 qq支付密码错误怎么办 ie8出现闪退怎么办 平板输不了密码怎么办 华硕笔记本键盘打不开怎么办 电脑打不开rar文件怎么办 苹果手机淘宝卡怎么办 淘宝联盟网址打不开怎么办 淘宝买东西卖家不退货怎么办 手机清理后微信打不开视频怎么办 搜索历史已关闭怎么办 微博重新激活怎么办 淘宝直播反应慢怎么办 微信新设备无法登录怎么办 dnf自动连接失败怎么办 APP注册没有成功怎么办 忘记绑定微信号怎么办 淘宝钻石绣被骗怎么办 safari出现闪退怎么办 12123手机号被占用怎么办 12306换手机了怎么办 51串口打开失败怎么办