月
pure__Elysia · · 个人记录
1.月(moon.cpp)
题目背景
说起月,pureElysia 就想起了 kiana 。这个名字是多么好听,不过对于pureElysia 来说,独属于他的月光之神,他早已遇见。
话说,崩坏三的剧情在3月3日在剧情PV《毕业旅行》后,落下了一个平淡圆满的句号。这时,他把目光投向了《崩坏星穹铁道》。
众所周知,星穹铁道是在延续崩三的世界观,于是乎,崩P作为前辈就有一种不太应该的优越感。
然而呢,铁P作为新兴事物,自然也瞧不起现在的大头《原神》。
原P呢?毕竟实在过于成功,反而对崩三不屑一顾。
现在机房坐了一列的米卫兵,这一列有
米卫兵那一列,每个人推且推一款米家游戏。但他们都是小鬼,就只知道个崩三原神铁道,崩二鹿鸣未定崩一flyme2themoon完全为所未闻。pure__Elysia 作为拱火带师,煽风点火让他们打起来。注意,只有坐在一起的米孝子才会打起来,且左右都会打。
打的规则如下,坐在一起的两个米卫兵打一架,OP打赢BP,BP打赢TP,TP打赢OP。打赢之后,他们每个人还是君子固穷,坚守本心。但是下一列中,坐在这两个米卫兵之间的人一看,不行,我要变成打赢了的那个小鬼的样子。等到一列打完之后,嘿嘿嘿, pureElysia 就会再次煽风点火,让这一列也开始世纪大战。不过之前那些打过的列早已看清 pureElysia 乐子人的本质,因此不会受影响打架了。
这样一列一列打下来,你猜怎么这,强哥也变成米卫兵喽。现在 pure__Elysia 很关心,强哥会喜欢什么游戏。
没理解到?可以看看样例的图解哦。
题目描述
给出
这样的世纪大战传教会进行
输入输出格式
输入第一行,为数据组数
对于每组数据,对应两行输入,其中,第一行为列的长度
对于每组数据,要求输出一行一个字符,表示强哥会选择的游戏。
数据范围
对于 15%的数据
对于 30%的数据
对于 50%的数据
对于 70%的数据
对于 100%的数据
样例输入1
1
9
BBOTBOTTB
样例输出1
B
样例输入2
2
6
BOTBBO
5
TTOBO
样例输出2
O
T
样例解释1
样例解释2
浪费你时间的小小插曲
这其实是去年2022年CCPC的一道题。别的组都是3人参赛,只有我们组是两人,本来我和瓜瓜两个人就不是很想去了,但是在强哥的劝说下毅然参赛。
直接说结果吧,我们两个人,和其他三人组最高战绩一样(虽然是时间是A四道题中最慢的的说),A了四道题(趁瓜瓜不在,吹一手,代码都是我写的)。并且有三道是一遍过。这道就是我们唯一没有一遍过的题。
最刺激的是,这道题是我们最后30min,反正也不怕罚时了,反复乱交,结果在最后两分钟!!!!倒数第2min给A掉了!!!
这时,小陈“喜欢的OI好题”列表里就多了这么一道题。
STD1 手写栈
//#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
//#define int long long 开不得,容易爆内存
//#define ri register int
inline int rd()//快读版子,总得选一个你喜欢的版本背住
{
int a=0,f=1;
char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
for(;isdigit(c);c=getchar()) a=(a<<1)+(a<<3)+c-'0';
return a*f;
}
char st[1000005],c;//栈
int tot;
inline bool win()
{
if(c=='O'&&st[tot-1]!='T')
return 1;
if(c=='T'&&st[tot-1]!='B')
return 1;
if(c=='B'&&st[tot-1]!='O')
return 1;
return 0;
}
signed main()
{
int T=rd();
while(T--)
{
tot=0;
int n=rd();
for(int i=1;i<=n;i++)
{
cin>>c;
while(tot!=0&&win())
tot--;
st[tot++]=c;
}
cout<<st[0]<<endl;
}
return 0;
}