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)\)堆石子,轮流进行一些操作,不能进行下去的人则输掉这局游戏.操作包含以下两种: 把石子 ...
随机推荐
- nyoj 113 字符串替换 (string中替换函数replace()和查找函数find())
字符串替换 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 编写一个程序实现将字符串中的所有"you"替换成"we" 输入 ...
- [luoguP3203][HNOI2010]BOUNCE 弹飞绵羊(LCT)
传送门 每个点都会跳到另一个点,连边就是一棵树. 更改弹力就是换边. 求一个点跳多少次跳到终点就是求这个点的深度,那么只需要维护 size 域,access(n + 1) 然后 splay(x),求 ...
- 线段树题集 (cf版)
lazy区间修改 : http://acm.hdu.edu.cn/showproblem.php?pid=4902 (hdu4902) http://acm.hdu.edu.cn/showpr ...
- N的倍数
题目来源: Ural 1302 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 一个长度为N的数组A,从A中选出若干个数,使得这些数的和是N的倍数. 例如:N = ...
- NOIP2013 提高组合集
NOIP 2013 提高组 合集 D1 T1 转圈游戏 快速幂裸题 #include <iostream> #include <cstdio> #include <cst ...
- Ubuntu 16.04安装7zip
搜索时发现7zip有两个:p7zip,p7zip-full,p7zip-rar.研究发现: p7zip:包含7zr(最小的7zip归档工具),仅仅只能处理原生的7z格式. p7zip-full:包含7 ...
- MySQL: How to support full Unicode in MySQL databases
How to support full Unicode in MySQL databases Published 30th July 2012 · tagged with MySQL, securit ...
- nodejs shell
REPL (Read-eval-print loop),即输入—求值—输出循环.如果你用过 Python,就会知道在终端下运行无参数的 python 命令或者使用 Python IDLE 打开的 sh ...
- 【CV论文阅读】action recognition by dense trajectories
密集轨迹的方法是通过在视频帧上密集地采样像素点并且在追踪,从而构造视频的局部描述子,最后对视频进行分类的方法依然是传统的SVM等方法. 生成密集轨迹: (1)从8个不同的空间尺度中采样,它们的尺度差因 ...
- 此人牛b,学习榜样
http://liyangliang.me/about/ ------------------------------------------------------------2017年11月12日 ...