比赛 |
NOIP模拟赛1 |
评测结果 |
AAATTTTTTT |
题目名称 |
叉叉 |
最终得分 |
30 |
用户昵称 |
Molotov |
运行时间 |
7.000 s |
代码语言 |
C++ |
内存使用 |
0.51 MiB |
提交时间 |
2018-02-08 21:15:28 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cctype>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<time.h>
#define ll long long
using namespace std;
bool a[100002]={0};//字符串第i个位置是否可以算作交叉的标记
char x[100002];
int b[28]={0};//统计字母(a,b,..z)在什么地方出现过
void solve()
{
int cnt=0;
for(int i=1;i<=strlen(x+1);i++)
{
if(b[x[i]-96]==0)
b[x[i]-96]=i,a[i]=1;
else
{
for(int j=b[x[i]-96]+1;j<i;j++)
if(a[j]==1) cnt++;
a[b[x[i]-96]]=0,b[x[i]-96]=0;
}
}
cout<<cnt<<endl;
}
int main()
{
freopen("xxxx.in","r",stdin);
freopen("xxxx.out","w",stdout);
gets(x+1);
solve();
return 0;
}