s7h 喜欢玩英国源神!
在 Arcaea 的世界中,玩家需要通过根据节奏,敲打 note 来获得相应的分数。
对于每一个 note 的敲击,会根据精准度,给出该 note 的评价。从优到劣分为 PURE
pure
far
lost
四种。
同时,游戏内存在回忆收集条机制,我们记一个谱面的物量(即 note 总数)为 $n$ ,则其回忆系数 $k$ 遵循以下公式:
$$ \begin{equation}
k=\left\{
\begin{array}{ll}
\frac{80}{n} +0.2& n<400 \\
\frac{32}{n}+0.2&400\le n <600 \\
\frac{96}{n} +0.08&600\le n
\end{array}\right.
\end{equation}$$
回忆收集条最初为 $0$ ,上限为 $100$ ,下限为 $0$ ,当玩家获得 pure
或 PURE
评价时,回忆收集条增加 $k$ ,当玩家获得 far
评价时,回忆收集条增加 $0.5×k$ ,当玩家获得 lost
评价时,回忆收集条减少 $2$ 。
在游戏结束时,会根据玩家的表现给予相应的评价:
当玩家一局中所有 note 都获得 PURE
的评价时,玩家获得满分。
否则,如果一局中所有 note 都获得 PURE
或 pure
的评价,玩家获得评价 pure memory
。
否则,如果玩家整局没有 lost
的评价,玩家获得评价 full recall
。
否则,如果在游戏结束时回忆收集条 >= 70,则获得 track complete
的评价,否则获得 track lost
的评价。
如今,s7h 给出了他在一局游戏中每个 note 的表现,请你告诉他最终会获得怎样的评价。
第一行输入一个正整数 $T$,代表数据组数。
对于每组数据,首先输入一行一个正整数,代表一局的 note 总数 $n$。
接下来 $n$ 行,每行一个字符串,为 PURE
,pure
,far
,lost
的一种。
对于每组数据,输出一行字符串,代表 s7h 获得的最终评价。
如果 s7h 获得了满分,输出 That's impossible!
。
如果 s7h 获得了 pure memory
评价,输出s7h orz
。
如果 s7h 获得了 full recall
评价,输出s7h 666
。
如果 s7h 获得了 track complete
评价,输出just so so
。
如果 s7h 获得了 track lost
评价,输出 laji s7h
。
3
3
PURE
pure
far
3
PURE
PURE
PURE
1
lost
s7h 666
That's impossible!
laji s7h
数据保证 $n\le2221$
错误代码:
#include<stdio.h>
int T;
int n,cnt_PURE,cnt_pure,cnt_far,cnt_lost;
double bar,k;
char s[10];
int main(){
scanf("%d",&T);
while(T--){
scanf("%d",&n);
if(n>=600) k=96/n+0.08;
else if(n>=400) k=32/n+0.2;
else k=80/n+0.2;
cnt_PURE=cnt_pure=cnt_far=cnt_lost=0;
for(int i=1;i<=n;++i){
scanf("%s",&s);
if(s[0]=='P'){
bar+=k;
cnt_PURE++;
}
else if(s[0]=='p'){
bar+=k;
cnt_pure++;
}
else if(s[0]=='f'){
bar+=0.5*k;
cnt_far++;
}
else{
bar–=2.0;
cnt_lost++;
}
}
if(cnt_PURE==n) printf("That's impossible!\n");
else if(cnt_PURE+cnt_pure==n) printf("s7h orz\n");
else if(cnt_PURE+cnt_pure+cnt_far==n) printf("s7h 666\n");
else{
if(bar>=70.0) printf("just so so\n");
else printf("1aji s7h\n");
}
}
return 0;
}