UVa 12100 - Printer Queue【队列和优先队列】
2016-01-08 14:32
337 查看
原题网址:
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=836&page=show_problem&problem=3252
题目说的是,有一些打印任务,每次只打印这些中最重要的,如果当前任务不是最重要的,就放在队尾,现在指定某一位置的一个任务,问什么时候把指定任务打印完成(打印每个需要 1 )
题解:
用的优先队列判断是否是最大的那个值,其实不需要优先队列,只是顺手了而已,然后注意标记上自己的任务,无脑循环模拟。
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=836&page=show_problem&problem=3252
题目说的是,有一些打印任务,每次只打印这些中最重要的,如果当前任务不是最重要的,就放在队尾,现在指定某一位置的一个任务,问什么时候把指定任务打印完成(打印每个需要 1 )
题解:
用的优先队列判断是否是最大的那个值,其实不需要优先队列,只是顺手了而已,然后注意标记上自己的任务,无脑循环模拟。
#include<stdio.h> #include<string.h> #include<queue> using namespace std; struct node { int val,kase; bool friend operator < (node a,node b) { return a.val<b.val; } }; int main() { int t,n,m; //freopen("shuju.txt","r",stdin); scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); priority_queue<node> pq; queue<node> q; int val,kase; for(int i=0;i<n;++i) { scanf("%d",&val); kase=(m==i)?1:0; node tp={val,kase}; pq.push(tp); q.push(tp); } int time=0; while(1) { node a=pq.top(),b=q.front(); while(a.val!=b.val) { q.push(b); q.pop(); a=pq.top(),b=q.front(); } ++time; pq.pop();q.pop(); if(b.kase==1) { printf("%d\n",time); break; } } } return 0; }
相关文章推荐
- Android 更新UI的两种方法——handler和runOnUiThread()
- Android Build类
- 【LeetCode】Repeated DNA Sequences 解题报告
- Request与Response常用方法总结
- Android Contacts (一)ContentResolver query 参数详解
- UIPickerView组件的使用之——省市联动
- Map对value进行排序
- org.hibernate.exception.JDBCConnectionException: could not execute query
- apktool,dex2jar,jd-gui简单使用与实战
- 如何在UICollectionView reloadData后找到的某个cell
- Axure VS Mockplus VS Balsamiq - 原型图设计工具对比
- Android仿iOS7的UISegmentedControl 分段
- 1.3.0 REQUEST ROUTING(请求路由)
- gradle:build.number 获取不到导致的error
- iOS 在UILabel显示不同的字体和颜色
- 用数据库连接池解决org.hibernate.exception.JDBCConnectionException:could not execute query
- UITextFiled的输入框改成一条下划线
- UINvigation,导航条
- [示例]NSDictionary-按value排序数组中的字典并输出(描述器)
- NGUI FontMaker 简单使用,以及在文字源文件丢失的情况下,怎么根据UIFont预制获取全部文字