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)\)堆石子,轮流进行一些操作,不能进行下去的人则输掉这局游戏.操作包含以下两种: 把石子 ...
随机推荐
- LINUX-SWAP文件系统
mkswap /dev/hda3 创建一个swap文件系统 swapon /dev/hda3 启用一个新的swap文件系统 swapon /dev/hda2 /dev/hdb3 启用两个swap分区
- 关于vuex自己理解的三幅图
- HDU 5178 pairs(双指针)
HDU 5178 pairs(双指针) Hdu 5178 解法:因为要求的是绝对值小于等于k,因此数字的序号关系并不重要,那么排序后使用双指针即可解决这个问题. #include<queue&g ...
- [luoguP1026] 统计单词个数(DP)
传送门 题解 #include <cstdio> #include <cstring> #define max(x, y) ((x) > (y) ? (x) : (y)) ...
- codevs1314 寻宝
题目描述 Description 传说很遥远的藏宝楼顶层藏着诱人的宝藏.小明历尽千辛万苦终于找到传说中的这个藏宝楼,藏宝楼的门口竖着一个木板,上面写有几个大字:寻宝说明书.说明书的内容如下: 藏宝楼共 ...
- 洛谷 P3063 [USACO12DEC]牛奶的路由Milk Routing
P3063 [USACO12DEC]牛奶的路由Milk Routing 题目背景 征求翻译.如果你能提供翻译或者题意简述,请直接发讨论,感谢你的贡献. 题目描述 Farmer John's farm ...
- Spark之安装和使用
Scala安装 Spark使用Scala开发,安装的Scala版本必须和Spark使用的版本一致,否则使用Scala编写的Spark任务会有兼容性问题 可以到Spark官网查看确定Scala版本,或者 ...
- 自由宣言--《I Have a Dream》(马丁.路德.金)
I Have a Dream by Martin Luther King, Jr. I am happy to join with you today in what will go down in ...
- iOS开发-植入广告(iAd, Admob实例)
应用中植入广告是一种非常好的盈利手段. 以下介绍主流的两种方法.iAd, Admob 先mark一个非常具体的pdf. http://pan.baidu.com/share/link?sharei ...
- Codeforces Round #273 (Div. 2)D. Red-Green Towers DP
D. Red-Green Towers There are r red and g green blocks for construction of the red-green tower. Re ...