补番计划

Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 8   Accepted Submission(s) : 1

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

阿聪是一个日漫狂魔。暑假在家的时候,他有12小时在补番。12小时在睡觉。

可是动漫的质量有好有坏,选择看哪一部动漫一直都是一个问题。

于是。他做了一个补番的队列。每一次当他完结某部动漫后,他会选择队列最前面的那部动漫观看,并从队首删除。

阿聪想补的番通常有2个途径。一个是来自网上网友的推荐,他会把网友推荐的动漫放在队列的末尾。

还有一种是来自现实朋友的推荐,他会把朋友推荐的动漫直接放在队列最前面。

阿聪有时候也会在贴吧里听到有人说某部动漫一点也不好看,或者是无意中被透剧了,这个时候阿聪就会非常生气的把这部动漫从队列中删除。

Input

第一行有一个整数T(T<=5),表示測试组数

接下来有T组数据

每一组数据第一行有一个数字Q(Q<=10000)。表示这组数据中的操作数。

接下来Q行中,分别有以下几种格式

0

1 [动漫名字]

2 [动漫名字]

3 [动漫名字]

Output

0表示阿聪如今要补番了,假设队列为空,则输出-1。否则取出队列的队首的动漫名字,并将它从队首中删除,假设这部动漫阿聪已经看过了, 则相同输出-1。否则输出动漫名字并换行,并标记为看过了

1表示网友推荐阿聪了一部动漫。阿聪把这部动漫增加到了队列末尾

2表示朋友推荐阿聪了一部动漫。阿聪把这部动漫增加到了队列首端

3表示阿聪不想看这部动漫了,他会从队列中删除全部这部动漫的(仅仅会删除在这个操作之前已存在队列中的,并不会影响后面的操作)

注意动漫名字都是用[]括起来的。名字中仅仅含有下划线数字字母并区分大写和小写,且2<=动漫名字长度<=50

Sample Input

2
7
0
1 [Sword_Art_Online]
1 [Your_Lie_in_April]
2 [sakura_sou_no_pet_na_kanojo]
0
0
0
6
1 [Your_Lie_in_April]
1 [Your_Lie_in_April]
2 [Is_the_order_a_rabbit]
3 [Is_the_order_a_rabbit]
0
0

Sample Output

-1
sakura_sou_no_pet_na_kanojo
Sword_Art_Online
Your_Lie_in_April
Your_Lie_in_April
-1

尽管没学过c++  。

感觉应该和java差点儿相同。。。

题意中由于要从队尾  队首增加 所以选用---------------------双端队列

为了推断是否看过某番 。为了番名的唯一性----------------set容器

剩下的就是模拟了

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <queue>
#include <set>
using namespace std;
int main()
{
set<string>s;
deque<string>q;
int ncase,n;
scanf("%d",&ncase);
while(ncase--)
{
s.clear();
while(!q.empty())
q.pop_back();
cin>>n;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
if(x==0)
{
if(!q.empty())
{
string x1=q.front();q.pop_front();
if(s.find(x1)==s.end())
{
cout<<x1<<endl;
s.insert(x1);
}
else
{
cout<<-1<<endl;
} }
else
{
cout<<-1<<endl;
}
}
if(x==1)
{
string x2;
cin>>x2;
q.push_back(x2.substr(1,x2.length()-2));
}
if(x==2)
{
string x2;
cin>>x2;
q.push_front(x2.substr(1,x2.length()-2));
}
if(x==3)
{
string x2;
cin>>x2;
x2=x2.substr(1,x2.length()-2);
int count=q.size();
while(count--)
{
string x3=q.front();q.pop_front();
if(x3.compare(x2)!=0)
{
q.push_back(x3);
}
}
}
} }
return 0;
}

补番计划 (长沙理工大学第十一届程序设计竞赛)(双端队列+set容器+string)的更多相关文章

  1. 2014江西理工大学C语言程序设计竞赛高级组题解

    1001 Beautiful Palindrome Number 枚举回文数字前半部分,然后判断该数字是否满足,复杂度为O(sqrt(n))! 1002 Recovery Sequence  本题的核 ...

  2. 2016年江西理工大学C语言程序设计竞赛(高级组)

    问题 A: jxust 解法:争议的问题(是输入整行还是输入字符串),这里倾向输入字符串,然后判断是否含有jxust就行 #include<bits/stdc++.h> using nam ...

  3. 2016年江西理工大学C语言程序设计竞赛(初级组)

    问题 A: 木棒根数 解法:把所有的情况保存下来,加一下就好 #include<bits/stdc++.h> using namespace std; map<char,int> ...

  4. 2015年江西理工大学C语言程序设计竞赛(高级组)

    A 解法:DP+二分 dp[i]=max(dp[i],dp[j]+p[i].v)(i>j) dp[i]表示建立i点之后能够获得的最大值 int n,M; struct node { int l, ...

  5. 2013年江西理工大学C语言程序设计竞赛(高级组)

    A 解法:dfs搜索,注意一个剪枝,否则会超时(听说原本是个dp)? #include<stdio.h> //#include<bits/stdc++.h> #include& ...

  6. 2015年江西理工大学C语言程序设计竞赛(初级组)

    JankTao相亲记 解法:排序 #include<stdio.h> #include<string.h> #include<iostream> #include& ...

  7. 2013年江西理工大学C语言程序设计竞赛(初级组)

    ACM ICPC WORLD FINAL 解法:排序大家都知道,去重的话,初学者用数组就好了 #include<algorithm> #include<iostream> us ...

  8. 2018年江西理工大学C语言程序设计竞赛(初级组)一

     C语言竞赛初级组第一.二场答案:https://www.cnblogs.com/xingkongyihao/p/10046918.html  A: 逆序对 时间限制: 1 s      内存限制:  ...

  9. 2017年江西理工大学C语言程序设计竞赛(高级组)

    问题 A: 求近似值 #include <stdio.h> #include <time.h> #include <stdlib.h> using namespac ...

随机推荐

  1. 【LA3461】Leonardo的笔记本

    白书例题. #include<bits/stdc++.h> using namespace std; ],vis[],cnt[]; inline int read(){ ,x=;char ...

  2. js判断对象为空

    http://www.jb51.net/article/42713.htm var isEmptyValue = function(value) { var type; if(value == nul ...

  3. javascript中使用el表达式获取不到数据问题

    我们通常会在jsp里面使用el表达式,把需要的值传递给 javascript 方法,例如: <p onclick="doSomething(${param})">< ...

  4. k8s的存储Volume

    1.Volume简介 我们经常会说:容器和 Pod 是短暂的.其含义是它们的生命周期可能很短,会被频繁地销毁和创建.容器销毁时,保存在容器内部文件系统中的数据都会被清除. 为了持久化保存容器的数据,可 ...

  5. mysql查看每张表的空间使用情况

    use information_schema; /,),'MB') as data ,concat(round(index_length//,),'MB') as indexweight from T ...

  6. [/wp_active.php]

    if ( !is_multisite() ) { wp_redirect( site_url( '/wp-login.php?action=register' ) );//将用户重定向到一个预先制定的 ...

  7. Chief Technology Officer

    转自地址:http://www.swoole.com/News/76.html 1)错误都是自上而下 当事情出现混乱的时候,人们总是寻求寄托于Process的制定,很多的管理者,觉察到事情的失控,却不 ...

  8. HDU 1180 诡异的楼梯【BFS/楼梯随时间变化】

    诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submis ...

  9. python——入门系列(一)索引与切片

    1.索引和切片:python当中数组的索引和其他语言一样,从0~n-1,使用索引的方法也是中括号,但是python中的切片的使用简化了代码 索引:取出数组s中第3个元素:x=s[2] 切片:用极少的代 ...

  10. 读《thinking in java》第一遍笔记

    1.System.out.println(variable)为什么会调用重写的toString方法? 根据我搜到的信息结合源代码,得到以下结论,如有误请告知. 首先我们看一下println方法的源代码 ...