标签:class 数据 space ios highlight int 题目 turn 答案
现在有一个字符串,每个字母出现的次数均为偶数。接下来我们把第一次出现的字母a和第二次出现的a连一条线,第三次出现的和四次出现的字母a连一条线,第五次出现的和六次出现的字母a连一条线...对其他25个字母也做同样的操作。
现在我们想知道有多少对连线交叉。交叉的定义为一个连线的端点在另外一个连线的内部,另外一个端点在外部。
一行一个字符串。保证字符串均由小写字母组成,且每个字母出现次数为偶数次。
一个整数,表示答案。
abaazooabz
3
/
时间:2s 空间:256M
对于30% 的数据,字符串长度不超过50。
对于100% 的数据,字符串长度不超过100,000。
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<queue> using namespace std; char s[100610]; int kdl[36],ans,las[36]; int main(){ scanf("%s",s+1); int n=strlen(s+1); for(int i=1;i<=n;i++){ int q=s[i]-‘a‘+1; kdl[q]++; kdl[q]%=2; if(kdl[q]==0){ for(int j=1;j<=26;j++){ if(las[j]>las[q]&&kdl[j]){ ans++; } } } las[q]=i; } printf("%d\n",ans); return 0; }
标签:class 数据 space ios highlight int 题目 turn 答案
原文地址:https://www.cnblogs.com/xiongchongwen/p/11601077.html