



这道题有点类似括号匹配的思想,先把能取到10分的全部取完,然后剩下的就是一个01交错的数列,那么就直接计算贡献就好了
代码
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
char a[maxn],b[maxn];
int main()
{
freopen("study.in","r",stdin);
freopen("study.out","w",stdout);
scanf("%s",a+1); int n=strlen(a+1);
int pos=0,ans=0;
for(int i=1;i<=n;i++)
{
if(pos>=1 && b[pos]==a[i])
{
ans+=10;
pos--;
}
else b[++pos]=a[i];
}
ans+=(pos/2)*5;
printf("%d\n",ans);
return 0;
}

本文介绍了一种基于括号匹配思想的计分算法实现,通过先获取所有可得的10分组合,再处理剩余字符以计算最终得分。算法采用C++实现,并通过文件输入输出进行测试。

被折叠的 条评论
为什么被折叠?



