问题描述:
链接:https://ac.nowcoder.com/acm/challenge/terminal?&headNav=acm
来源:牛客网
quailty是一名狂热的ACM音游选手,沉迷各种音乐游戏,比如Lunatic Rave 2,osu!之类的。
今天,quailty玩的是国内游戏厂商雷亚(并不是赞助商)出品的一款音乐游戏Cytus。
游戏中,玩家需要随着游戏界面中上下移动的扫描线来适时演奏对应音符。
当上下移动的黑色线(扫描线)与圆形的物体(音符)的圆心重合时点击音符。
普通音符(图中第一种)只需点击即可。
锁链音符(图中第二种)将带箭头的音符(滑块)按下后不要松开,并将滑块沿着斜线和圆点组成的路径拖动,直至拖动到最后一个圆点处方可松开。注意拖动过程中应保持滑块圆心始终与扫描线重合。
长按音符(图中第三种)按下后不要松开,原地不动,等扫描线到达其末端并显示判定结果后方可松开。
Cytus共有五种判定,从好到坏依次为:彩PERFECT、黑PERFECT、GOOD、BAD、MISS。
得分中包括了90%的“判定分”和10%的“连击分”,而连击分是累进计算的,断COMBO对其影响很大,往往只要有1个MISS就会损失几万的连击分。
彩PERFECT和黑PERFECT在计算得分时一视同仁,只要全部PERFECT即可获得满分,满分为1000000,被称为MILLION Master。
quailty真的很严格,如果打完一把没有拿到MILLION Master,他就认为自己是NA Noob。
现在给你quailty打出的判定序列,请你输出这次游戏的评价是MILLION Master还是NA Noob。
输入描述:
第一行是一个正整数T ( 1 ≤ T ≤ 5 ),表示测试数据的组数,
每组测试数据,第一行是一个正整数n ( 1 ≤ n ≤ 100000 ),表示该组测试数据包含的判定数。接下来的n行,每行包含"PERFECT"、"GOOD"、"BAD"、"MISS"之中的一个字符串,表示quailty打出的一个判定。
输出描述:
对于每组数据,输出一行,包含一个字符串,表示这次游戏的评价。示例1
输入
复制2 5 PERFECT PERFECT PERFECT PERFECT PERFECT 10 PERFECT MISS PERFECT BAD BAD GOOD BAD GOOD GOOD MISS
输出
复制MILLION Master NA Noob
解题思路:
1.读入测试数据的组数T
2.对于每组测试数据,执行以下步骤:
3.读入判定数n
4.对于每个判定,进行判断,如果是PERFECT,则加入相应的计数器变量
5.执行终极判断:是否等于判定数。如果相等,则输出MILLION Master,否则输出NA Noob。
代码:
#include <iostream>
using namespace std;
int main() {
int T; // 测试数据的组数
string str; // 判定字符串
int n; // 判定数
int perfectCount; // PERFECT的计数器
cin >> T; // 读入测试数据的组数
while (T--) { // 对于每组测试数据
perfectCount = 0; // 初始化计数器
cin >> n; // 读入判定数
for (int i = 0; i < n; i++) { // 对于每个判定
cin >> str; // 读入字符串
if (str == "PERFECT") { // 如果是彩PERFECT或黑PERFECT
perfectCount++; // 计数器加1
}
}
if (perfectCount == n) { // 终极判断
cout << "MILLION Master" << endl;
} else {
cout << "NA Noob" << endl;
}
}
return 0;
}
标签:PERFECT,GOOD,第二十三,测试数据,BAD,判定,MISS
From: https://www.cnblogs.com/czfznb/p/17402796.html