Wannafly挑战赛19 A-队列Q
题目描述
输入描述:
第一行输入一个正整数 N,表示队列的大小。
第二行输入 N 个正整数,Q1,Q2,Q3,...QN,Qi表示队列中的第 i 个元素。保证这 N 个数是 N 的一个全排列。
第三行输入一个正整数 P,表示接下来要进行的操作次数。
1 ≤ Qi ≤ N.
1 ≤ P ≤ 105.
Si
1 ≤ Xi ≤ 105.
输出描述:
输出 N 个正整数,表示 P 次操作之后的队列。
输入例子:
4
4 2 1 3
3
FIRST 4
LAST 2
LAST 1
输出例子:
4 3 2 1
-->
输入
4
4 2 1 3
3
FIRST 4
LAST 2
LAST 1
输出
4 3 2 1
解题思路:以half为中心,先分别向左、向右标记一下每个元素的位置,然后进行p次操作,如果str为"FIRST",则将原来ml这个位置的值s[p[x]]赋为0,然后重新赋值s[ml--]=x;反之,进行类似操作,最后遍历一下每个位置1~maxn,如果s[i]不为0,则输出此位置上的元素即可,水过!
AC代码一之简单粗暴:
#include<bits/stdc++.h>
using namespace std;
const int maxn=;//长度开比4倍大
const int half=;//长度开比2倍大
int n,p,x,ml,mr,q[maxn],s[maxn],r[maxn];string str;
int main(){
cin>>n;memset(r,,sizeof(r));memset(s,,sizeof(s));ml=half,mr=half+;
for(int i=;i<=n;++i)cin>>q[i];
for(int i=n/;i>=;--i){s[ml]=q[i];r[q[i]]=ml--;}
for(int i=n/+;i<=n;++i){s[mr]=q[i];r[q[i]]=mr++;}
cin>>p;
while(p--){
getchar();cin>>str>>x;
if(str=="FIRST"){s[r[x]]=;s[ml]=x;r[x]=ml--;}
else{s[r[x]]=;s[mr]=x;r[x]=mr++;}
}
for(int i=,k=;i<maxn;++i)
if(s[i]!=){k++;cout<<s[i]<<(k==n?'\n':' ');} return ;
}
AC代码二之sort简单过:
#include<bits/stdc++.h>
using namespace std;
const int maxn=;
int n,p,x,head,tail,q[maxn],site[maxn];string str;
bool cmp(int a,int b){return site[a]<site[b];}//按实际位置排序
int main(){
cin>>n;
for(int i=;i<n;++i){cin>>q[i];site[q[i]]=i;}
cin>>p;head=-,tail=n;
while(p--){
getchar();cin>>str>>x;
if(str=="FIRST")site[x]=head--;
else site[x]=tail++;
}
sort(q,q+n,cmp);
for(int i=;i<n;++i)cout<<q[i]<<(i==n-?'\n':' ');
return ;
}
Wannafly挑战赛19 A-队列Q的更多相关文章
- 牛客~~wannafly挑战赛19~A 队列
链接:https://www.nowcoder.com/acm/contest/131/A来源:牛客网 题目描述 ZZT 创造了一个队列 Q.这个队列包含了 N 个元素,队列中的第 i 个元素用 Qi ...
- Wannafly 挑战赛 19 参考题解
这一次的 Wannafly 挑战赛题目是我出的,除了第一题,剩余的题目好像对大部分算法竞赛者来说好像都不是特别友好,但是个人感觉题目质量还是过得去的,下面是题目链接以及题解. [题目链接] Wanna ...
- Wannafly挑战赛19 B矩阵
矩阵 思路: 预处理好前缀和,枚举上边界和下边界,将二维变成一维,用单调队列找满足题意的最小前缀 复杂度,O(r*r*c) 代码: #pragma GCC optimize(2) #pragma GC ...
- Wannafly挑战赛7 C - 小Q与氪金游戏
题目描述 “为世界上所有的美好而战!”小Q同学最近沉迷“稳固3”,为了从最新的蛋池中抽出自己喜欢的角色卡,不惜氪下重金.在这个游戏中,氪一单可以得到x个宝石,而抽一次卡需要花费y个宝石,由于游戏策划十 ...
- Wannafly挑战赛19:C. 多彩的树
传送门 $k$的范围非常小, $O(n2^k)$求出状态最多为$S$的路径数, 然后容斥. #include <iostream> #include <sstream> #in ...
- Wannafly挑战赛26-F. msc的棋盘(模型转化+dp)及一类特殊的网络流问题
题目链接 https://www.nowcoder.com/acm/contest/212/F 题解 我们先考虑如果已知了数组 \(\{a_i\}\) 和 \(\{b_i\}\),如何判断其是否合法. ...
- Wannafly挑战赛25游记
Wannafly挑战赛25游记 A - 因子 题目大意: 令\(x=n!(n\le10^{12})\),给定一大于\(1\)的正整数\(p(p\le10000)\)求一个\(k\)使得\(p^k|x\ ...
- Wannafly挑战赛27
Wannafly挑战赛27 我打的第一场$Wannafly$是第25场,$T2$竟然出了一个几何题?而且还把我好不容易升上绿的$Rating$又降回了蓝名...之后再不敢打$Wannafly$了. 由 ...
- Wannafly挑战赛24游记
Wannafly挑战赛24游记 A - 石子游戏 题目大意: A和B两人玩游戏,总共有\(n(n\le10^4)\)堆石子,轮流进行一些操作,不能进行下去的人则输掉这局游戏.操作包含以下两种: 把石子 ...
随机推荐
- CSC
CSC CSC Table of Contents 1. account 2. Contacts 3. <国家公派留学人员预订回国机票说明> 4. 回国手续 4.1. 申办及开具<留 ...
- 洛谷 1182 数列分段Section II
[题解] 最大值最小化,那么一般要联想到二分.二分一个最大值,然后check一下能否分成小于等于m段即可. #include<cstdio> #include<algorithm&g ...
- POJ 1811 大整数素数判断 Miller_Rabin
#include <cstdio> #include <cstring> #include <cmath> #include <ctime> #incl ...
- 转载 - C++ - placement new
出处:http://www.cnblogs.com/wanghetao/archive/2011/11/21/2257403.html 有关placement new ...
- bzoj4518征途 斜率优化
征途这是一道十分经典的斜率优化 我们可以从题目中的方差来想,也就很容易的到这个式子 \[ans=m^2*\frac{\sum_{i=1}^{m}{(x_i-{\overline{x}})^2}}{m} ...
- android获取年月日时分秒
Calendar calendar=Calendar.getInstance(); //获取当前时间,作为图标的名字 String year=calendar.get(Calendar.YEAR)+& ...
- 13、Java并发性和多线程-Java Volatile关键字
以下内容转自http://tutorials.jenkov.com/java-concurrency/volatile.html(使用谷歌翻译): Java volatile关键字用于将Java变量标 ...
- 古代password
古代password 个人信息:就读于燕大本科软件project专业 眼下大三; 本人博客:google搜索"cqs_2012"就可以; 个人爱好:酷爱数据结构和算法.希望将来从事 ...
- 使用jcaptcha插件生成验证码
1.从官网http://jcaptcha.sourceforge.net/下载插件.将对应jar包导入到lib文件夹下 2.创建一个CaptchaServiceSingleton类用来获取jcaptc ...
- 一个经典的消费者和生产者的实现(linux )
#include <stdio.h> #include <pthread.h> #define BUFFER_SIZE 16 // 缓冲区数量 struct ...