初赛选择题
题目描述
每年十月份,是信息学竞赛的初赛时间。初赛会有不少选择题,涉及到不少计算机基础知识和图论方面的知识。
对于很多学习信奥时间不长的同学,选择题也是一个挑战。为了帮助大家提高这方面的能力,帅哥老师设置了一个有趣的玩法。
一次训练最高分是h分,0<=h <= 100,初始的时候给你s分,0<=s <=h,做题时每做对1题得1分,但当分数达到h分时不再增加。
每做错1题扣1分,但分数为0分时做错题不再扣分。
当做出题不加减分后,后面如果还做题了,做的题只要符合加减分条件时,后续题数会继续加减分。
根据给定的h,和一个题数对错序列(由d表示对c表示错),长度不超过100,求出最后得分。
输入
第一行,h 和 s第二行, 长度不超过100的对错字符串,串中仅包含d或c字母
输出
输出最后得分
样例输入
9 1
cdccdd
样例输出
2
样例数据分析:
最高可得9分,探测器在1分处,字符u代表向上1米,探测器上浮到0米处
字符d代表向下1米,答题者下降到1米处
字符c代表向上1米,答题者上升到0米处
字符c代表向上1米,答题者已经在最高分,不能上升,依然在0米处
字符d代表向下1米,答题者下降到1米处
字符d代表向下1米,答题者下降到2米处
最终结果为2。
题解:
这道题跟水下探测器,类似,明明是一模一样。
基础语法,字符串,循环,条件判断。
解释了一下数据,这题看起来就十分简单了(✺ω✺)。
源代码:
#include<bits/stdc++.h>
using namespace std;
int main() {
int h,s;
string str;
cin>>h>>s>>str;
for(int i=0; i<str.size(); i++) {
if(str[i]=='c') {
if(s>0) {
s--;
}
} else {
if(s<h) {
s++;
}
}
}
cout<<s<<endl;
return 0;
}