比赛 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;
}