ACM程序设计选修课——1044: (ds:队列)打印队列(queue模拟)
问题 A: (ds:队列)打印队列
时间限制: 1 Sec 内存限制: 128 MB
提交: 25 解决: 4
[提交][状态][讨论版]
题目描述
网络工程实验室只有一台打印机,它承担了非常繁重的工作。有时在打印机队列中有上百份的文件要打印,你可能要等上几个小时才能得到一页打印输出。
因为有些打印工作比较重要,所以Hacker General发明和实现了打印工作队列的一个简单的优先系统。每个打印工作被赋予了一个从1到9的优先级(9是最高优先级,l是最低优先级)。
打印机操作如下:
将队列中的第一个打印工作J从队列中取出;
如果在队列中有优先级高于J的打印工作,则不打印J,而是将J移到队列最后端;
否则,打印J(不将J移到队列最后端)。
用了这一方法,所有重要的文件能很快被打印。当然,令人烦恼的是其他的要被打印的文件要等上更多的时间。
现在的任务是确定你的打印工作什么时候被完成,请你写一个程序来计算它。给出当前队列(和优先级列表)以及你的工作在队列中的位置,计算需要多长时间你的工作才能被打印,假定队列中不会加入附加的工作。为了使事情简单化,我们设定一件打印工作恰好花费一分钟,向队列中添加一项打印工作和移走一件打印工作是在瞬间完成的。
输入
第一行给出一个正整数,表示测试用例的个数(最多100)。然后,对每个测试用例,第一行给出两个整数n和m,其中n是队列中的对象个数(l<=n<=100),m是你打印工作的位置(0<=m<=n-1)。队列中第一个位置编号为0,第二个位置编号为1,依次类推。
第二行给出n个整数,范围从l到9,给出队列中所有工作的优先级。第一个整数给出第一个打印工作的优先级,第二个整数给出第二个打印工作的优先级,依次类推。
输出
对每个测试用例输出一行,它是一个整数,表示到你的打印工作完成需要多少分钟。假定打印工作进行的时候没有附加的打印加入。
样例输入
- 3
- 1 0
- 5
- 4 2
- 1 2 3 4
- 6 0
- 1 1 9 1 1 1
样例输出
- 1
- 2
- 5
第一次用deque模拟不知道为什么错了。经过聚聚指导,用两个queue过了。
代码:
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<string>
- #include<queue>
- #include<set>
- #include<map>
- #include<sstream>
- #include<algorithm>
- #include<cmath>
- #include<cstdlib>
- #include<deque>
- using namespace std;
- typedef pair<int,bool> pii;
- bool cmp(const int &a,const int &b)
- {
- return a>b;
- }
- int main (void)
- {
- int t,i,j,ans,n,k,yy,temp;
- bool ok,haole;
- cin>>t;
- while (t--)
- {
- cin>>n>>k;
- int num[150]={0};
- int cnt=0;
- queue<pii>list;//模拟队列
- queue<int>pri;//优先级排序队列
- for (int i=0; i<n; i++)
- {
- cin>>yy;
- if(i!=k)
- list.push(pii(yy,false));
- else
- list.push(pii(yy,true));
- num[cnt++]=yy;
- }
- sort(num,num+cnt,cmp);//先放在临时数组里排序一下
- for (int i=0; i<n; i++)
- {
- pri.push(num[i]);//放入优先队列
- }
- ans=0;
- haole=0,ok=0;
- while (!haole)
- {
- while ((list.front()).first!=pri.front())//若开头的不是优先级最高
- {
- list.push(list.front());
- list.pop();
- }
- if((list.front()).second==true)//若开头的是被标记的任务,直接打印+break
- {
- ans++;
- break;
- }
- list.pop();
- pri.pop();
- ans++;
- }
- cout<<ans<<endl;
- }
- return 0;
- }
ACM程序设计选修课——1044: (ds:队列)打印队列(queue模拟)的更多相关文章
- ACM程序设计选修课——Problem E:(ds:图)公路村村通(Prim)
问题 E: (ds:图)公路村村通 时间限制: 1 Sec 内存限制: 128 MB 提交: 9 解决: 5 题目描述 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本, ...
- ACM程序设计选修课——Problem F:(ds:图)旅游规划(优先队列+SPFA)
问题 F: (ds:图)旅游规划 时间限制: 1 Sec 内存限制: 128 MB 提交: 14 解决: 4 题目描述 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路 ...
- ACM程序设计选修课——Problem D: (ds:树)合并果子(最优二叉树赫夫曼算法)
Problem D: (ds:树)合并果子 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 80 Solved: 4 [Submit][Status][ ...
- ACM程序设计选修课——Problem E:(ds:图)公路村村通(优先队列或sort+克鲁斯卡尔+并查集优化)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- ACM程序设计选修课——1018: Common Subsequence(DP)
问题 L: Common Subsequence 时间限制: 1 Sec 内存限制: 32 MB 提交: 70 解决: 40 [提交][状态][讨论版] 题目描述 A subsequence of ...
- ACM程序设计选修课——1076汇编语言(重定向+模拟)
1076: 汇编语言 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 34 Solved: 4 [Submit][Status][Web Board] ...
- ACM程序设计选修课——1057: Beautiful Garden(模拟+耐心调试)
1057: Beautiful Garden Time Limit: 5 Sec Memory Limit: 128 MB Submit: 25 Solved: 12 [Submit][Statu ...
- ACM程序设计选修课——1065: Operations on Grids(暴力字符串)
1065: Operations on Grids Time Limit: 3 Sec Memory Limit: 128 MB Submit: 17 Solved: 4 [Submit][Sta ...
- ACM程序设计选修课——1041: XX's easy problem(神烦的多次字符串重定向处理)
1041: XX's easy problem Time Limit: 1 Sec Memory Limit: 128 MB Submit: 41 Solved: 7 [Submit][Statu ...
随机推荐
- HDU 4741 Save Labman No.004 (几何)
题意:求空间两线的最短距离和最短线的交点 题解: 线性代数和空间几何,主要是用叉积,点积,几何. 知道两个方向向量s1,s2,求叉积可以得出他们的公共垂直向量,然后公共垂直向量gamma和两线上的点形 ...
- React 官方脚手架 create-react-app快速生成新项目
进入新公司已经半年了,各个业务线,技术栈都已经熟悉,工作也已经游刃有余,决定慢下脚步,沉淀积累,回顾一下所用技术栈所包含的基本知识,以及再公司中的实战. 首先回顾新项目搭建 react脚手架目前使用较 ...
- 2018.4.6 java交易记录系统
题目 ###1.交易明细文件内容如下例: 客户号 姓名 所述机构号 性别 帐号 发生时间 发生额 000001|刘德华|0000|1|4155990188888888|20060720200005|3 ...
- JS事件类型--1
滚轮事件其实就是一个mousewheel事件,这个事件跟踪鼠标滚轮,类似Mac的触屏版. 一.客户区坐标位置 鼠标事件都是在浏览器视口的特定位置上发生的.这个位置信息保存在事件对象的clientX和c ...
- 01将图片嵌入到Markdown文档中
将图片内嵌入Markdown文档中 将图片嵌入Markdown文档中一直是一个比较麻烦的事情.通常的做法是将图片存入本地某个路径或者网络存储空间,使用URL链接的形式插入图片: ![image][ur ...
- php读取不到https的域名
因测试环境php遇到无法正常读取到https的域名,但是域名配置了ssl证书,故做如下排查. php测试代码如下 $config['base_url'] = ''; #开启调试模式 #echo &qu ...
- 常用排序算法的总结以及编码(Java实现)
常用排序算法的总结以及编码(Java实现) 本篇主要是总结了常用算法的思路以及相应的编码实现,供复习的时候使用.如果需要深入进行学习,可以使用以下两个网站: GeeksForGeeks网站用于学习相应 ...
- GoF23种设计模式之结构型模式之代理模式
一.概述 为其他对象提供一种代理以控制对这个对象的访问. 二.适用性 1.远程代理(RemoteProxy):为一个对象在不同的地址空间土工局部代表. 2.虚代理(VirtualProxy):根据需要 ...
- pycharm-install scipy
懒得装双系统,所以在win7下用pycharm,python2.7 虽然机子本身是64位,但是安装包的时候,我居然需要下载32位的??迷:) 这次装的是scipy.在pycharm里添加不了,根据网上 ...
- 并查集:CDOJ1593-老司机破阵 (假的并查集拆除)
老司机破阵 Time Limit: 4500/1500MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Problem Descri ...