比赛 NOIP模拟赛1 评测结果 AAAAAAAAAA
题目名称 叉叉 最终得分 100
用户昵称 bowen26222 运行时间 0.061 s
代码语言 C++ 内存使用 0.54 MiB
提交时间 2018-02-08 19:34:55
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n;
int a[200005];
int m[100];
int lowbit(int x){
	return (x&(-x));
}
void add(int i,int k){
	while(i<=n+5){
		a[i]+=k;
		i+=lowbit(i);
	}
}
int sum(int i){
	int ans=0;
	while(i>0){
		ans+=a[i];
		i-=lowbit(i);
	}
	return ans;
}
int main(){
	freopen("xxxx.in","r",stdin);
	freopen("xxxx.out","w",stdout);
	string s;
	cin>>s;
	n=s.size();
	int ans=0;
	for(int i=1;i<=n;i++){
		int x=s[i-1]-'a'+1;
		if(!m[x]){
			add(i,1);
			m[x]=i;
		}
		else{
			add(m[x],-1);
			ans+=(sum(i)-sum(m[x]));
			m[x]=0;
		}   
	}
	printf("%d",ans);
}