P2776 [SDOI2007]小组队列
2018-06-17 22:25:44来源:未知 阅读 ()
题目背景
嘛,这道非常简单的给大家提供信心的省选题洛谷居然没有!
这么简单的题怎么可以没有!
给大家提升士气是义不容辞的责任!
所以我就来补一下啦..
值得一提的是,标程是我自己做的..
很渣,因为数据很水所以能AC..
大神勿喷..
题目描述
有 m 个小组, n 个元素,每个元素属于且仅属于一个小组。
支持以下操作:
push x:使元素 x 进队,如果前边有 x 所属小组的元素,x 会排到自己小组最后一个元素的下一个位置,否则 x 排到整个队列最后的位置。
pop:出队,弹出队头并输出出队元素,出队的方式和普通队列相同,即排在前边的元素先出队。
输入输出格式
输入格式:
第一行有两个正整数 n, m,分别表示元素个数和小组个数,元素和小组均从 0 开始编号。
接下来一行 n 个非负整数 Ai,表示元素 i 所在的小组。
接下来一行一个正整数 T ,表示操作数。
接下来 T 行,每行为一个操作。
输出格式:
对于每个出队操作输出一行,为出队的元素。
输入输出样例
4 2 0 0 1 1 6 push 2 push 0 push 3 pop pop pop
2 3 0
说明
对于30%的数据,1≤n≤100,1≤m≤10,T≤50。
对于100%的数据,1≤n≤100000,1≤m≤300,T≤100000,输入保证操作合法。
第一次用到二维队列
用last来表示每一个小组内元素出现的顺序
q队列表示每一个小组出现的顺序
我们想一下,如果一个元素所属的小组在之前出现过
那么我们直接加到last队列里就好
这样可以保证按照小组的顺序输出
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<queue> 6 using namespace std; 7 int read(int & n) 8 { 9 char c='.';int x=0,flag=0; 10 while(c<'0'||c>'9') 11 { 12 c=getchar(); 13 if(c=='-')flag=1; 14 } 15 while(c>='0'&&c<='9') 16 { 17 x=x*10+(c-48); 18 c=getchar(); 19 } 20 if(flag==1)n=-x; 21 else n=x; 22 } 23 const int MAXN=10000001; 24 queue<int>q,last[301]; 25 int group[MAXN]; 26 int main() 27 { 28 int n,m,p,meiyong; 29 read(n);read(meiyong); 30 for(int i=0;i<n;i++) 31 read(group[i]); 32 read(m); 33 for(int i=1;i<=m;i++) 34 { 35 string s; 36 cin>>s; 37 if(s=="push") 38 { 39 read(p); 40 if(last[group[p]].empty()) 41 q.push(group[p]); 42 last[group[p]].push(p); 43 } 44 else 45 { 46 printf("%d\n",last[q.front()].front()); 47 last[q.front()].pop(); 48 if(last[q.front()].empty()) 49 q.pop(); 50 51 } 52 } 53 return 0; 54 }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:P1257 平面上的最接近点对
下一篇:排序——快速排序(尾递归优化)
- L1-030 一帮一 2019-02-17
- L1-030. 一帮一 2018-06-18
- 小组件---快递查询组件 2018-06-18
- 【codevs1506】传话 2018-06-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash