补番计划 (长沙理工大学第十一届程序设计竞赛)(双端队列+set容器+string)
补番计划
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
可是动漫的质量有好有坏,选择看哪一部动漫一直都是一个问题。
于是。他做了一个补番的队列。每一次当他完结某部动漫后,他会选择队列最前面的那部动漫观看,并从队首删除。
阿聪想补的番通常有2个途径。一个是来自网上网友的推荐,他会把网友推荐的动漫放在队列的末尾。
还有一种是来自现实朋友的推荐,他会把朋友推荐的动漫直接放在队列最前面。
阿聪有时候也会在贴吧里听到有人说某部动漫一点也不好看,或者是无意中被透剧了,这个时候阿聪就会非常生气的把这部动漫从队列中删除。
Input
接下来有T组数据
每一组数据第一行有一个数字Q(Q<=10000)。表示这组数据中的操作数。
接下来Q行中,分别有以下几种格式
0
1 [动漫名字]
2 [动漫名字]
3 [动漫名字]
Output
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
cid=29617&pid=1004" style="color:rgb(26,92,200); text-decoration:none">Statistic
| Submit |cid=29617" style="color:rgb(26,92,200); text-decoration:none">Back
尽管没学过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)的更多相关文章
- 2014江西理工大学C语言程序设计竞赛高级组题解
1001 Beautiful Palindrome Number 枚举回文数字前半部分,然后判断该数字是否满足,复杂度为O(sqrt(n))! 1002 Recovery Sequence 本题的核 ...
- 2016年江西理工大学C语言程序设计竞赛(高级组)
问题 A: jxust 解法:争议的问题(是输入整行还是输入字符串),这里倾向输入字符串,然后判断是否含有jxust就行 #include<bits/stdc++.h> using nam ...
- 2016年江西理工大学C语言程序设计竞赛(初级组)
问题 A: 木棒根数 解法:把所有的情况保存下来,加一下就好 #include<bits/stdc++.h> using namespace std; map<char,int> ...
- 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, ...
- 2013年江西理工大学C语言程序设计竞赛(高级组)
A 解法:dfs搜索,注意一个剪枝,否则会超时(听说原本是个dp)? #include<stdio.h> //#include<bits/stdc++.h> #include& ...
- 2015年江西理工大学C语言程序设计竞赛(初级组)
JankTao相亲记 解法:排序 #include<stdio.h> #include<string.h> #include<iostream> #include& ...
- 2013年江西理工大学C语言程序设计竞赛(初级组)
ACM ICPC WORLD FINAL 解法:排序大家都知道,去重的话,初学者用数组就好了 #include<algorithm> #include<iostream> us ...
- 2018年江西理工大学C语言程序设计竞赛(初级组)一
C语言竞赛初级组第一.二场答案:https://www.cnblogs.com/xingkongyihao/p/10046918.html A: 逆序对 时间限制: 1 s 内存限制: ...
- 2017年江西理工大学C语言程序设计竞赛(高级组)
问题 A: 求近似值 #include <stdio.h> #include <time.h> #include <stdlib.h> using namespac ...
随机推荐
- java两种实现二分查找方式
二分查找法适用于 升序排列的数组,如果你所要操作的数组不是升序排序的,那么请用排序算法,排序一下. 说明:使用二分查找法相比顺序查找 节约了时间的开销,但是增加了空间使用.因为需要动态记录 起始索引 ...
- 安装XHProf分析PHP性能瓶颈(原创)
废话不多说,直接上代码 ,手动滑稽.o(╯□╰)o 如果已解决您的问题,请在文章底部点击下关注,非常感谢. 下面是LINUX命令行 $ wget http://pecl.php.net/get/x ...
- mySQL的存储过程详解
mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...
- iOS运行时,如何增加成员变量
必须实现getter和setter方法 ``` - (void)setName:(NSString *)name { /** * 为某个类关联某个对象 * * @param object#> 要 ...
- React Native - 0序言
1. 什么是React Native? React Native是Facebook在React.js Conf 2015大会上推出的一个用于开发Android t iOS App的一个框架.主要编程语 ...
- DB2、ORACLE SQL写法的主要区别
DB2.ORACLE SQL写法的主要区别 说实话,ORACLE把国内的程序员惯坏了,代码中的SQL充斥着大量ORACLE特性,几乎没人知道ANSI的标准SQL是什么样子,导致程序脱离了ORACL ...
- python VENV 环境 requirements.txt的生成、使用
python项目 requirements.txt 文件,记录所有依赖包及其精确的版本号.用于新环境部署. 在虚拟环境中pip生成命令(正常环境类似): (venv) $ pip freeze > ...
- 训练指南 UVALive - 5135 (双连通分量)
layout: post title: 训练指南 UVALive - 5135 (双连通分量) author: "luowentaoaa" catalog: true mathja ...
- hdu2825(AC 自动机)
hdu2825 题意 给出一些字符串,要求构造一个长度为 \(n\) 的字符串至少包括其中的 \(k\) 个,问有多少种字符串满足条件. 分析 AC自动机 构造状态转移,然后 状态压缩DP 即可. \ ...
- WebApi 的三种寄宿方式 (二) - 宿主和控制器不在一个程序集
新建一个类库: SelfHost: 方法一: 1.添加对MyControllers类库的引用. 2.在控制台代码中加入一行代码: 当然,可以添加多个程序集.(记得引用) var config = ne ...