题解
连着两场中文题目看错。。题意说做题的时候如果和当天推荐一样则得到题目分数-5的分数 不是扣5分
考虑如果他不是傻纸则不会出现0收益的题目。因为不会看题的时候按照推荐相反的看,然后做的时候也按照推荐相反的做
所以只会出现10分或者5分的情况,10分的情况就是两个相同的进行配对,类似于括号匹配用栈实现,把相同的能匹配的匹配完
剩下的数量因为要看一个再写一个所以/2*5就是得分相加即可
AC代码
#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const int MAXN = 1e6 + 10;
char s[MAXN];
int main()
{
#ifdef LOCAL
//freopen("C:/input.txt", "r", stdin);
#endif
scanf("%s", s);
stack<char> stk;
int ans = 0;
for (int i = 0; s[i]; i++)
if (!stk.empty() && stk.top() == s[i])
stk.pop(), ans += 10; //如果两个相同的能配对就配对
else
stk.push(s[i]);
ans += stk.size() / 2 * 5; //剩下的没配对则一个看一个写两个得5分 不会出现0分的情况
cout << ans << endl;
return 0;
}