比赛 |
NOIP模拟赛1 |
评测结果 |
AAAAAAAAAA |
题目名称 |
叉叉 |
最终得分 |
100 |
用户昵称 |
lajioj |
运行时间 |
5.009 s |
代码语言 |
C++ |
内存使用 |
1.73 MiB |
提交时间 |
2018-02-08 20:11:23 |
显示代码纯文本
#include<bits/stdc++.h>
#define A 1
#define B 2
#define C 3
#define D 4
#define E 5
#define F 6
#define G 7
#define H 8
#define I 9
#define J 10
#define K 11
#define L 12
#define M 13
#define N 14
#define O 15
#define P 16
#define Q 17
#define R 18
#define S 19
#define T 20
#define U 21
#define V 22
#define W 23
#define X 24
#define Y 25
#define Z 26
using namespace std;
const int MAXN = 100000+5;
char a[MAXN];
struct node{
int l,r;
}vis[27][10001];
int k[30];
bool pd[27];
void file(){
freopen("xxxx.in","r",stdin);
freopen("xxxx.out","w",stdout);
}
int main(){
file();
for(int i=1;i<=26;++i){
k[i] = 1;
}
scanf("%s",a+1);
int len = strlen(a+1);
for(int i=1;i<=len;++i){
pd[a[i]-96] = true;
if(vis[a[i]-96][k[a[i]-96]].l == 0) vis[a[i]-96][k[a[i]-96]].l = i;
else{
vis[a[i]-96][k[a[i]-96]].r = i;
k[a[i]-96]++;
}
}
for(int i=1;i<=26;++i){
k[i]-=1;
}
int ans=0;
for(int i=1;i<26;++i){
if(!pd[i]) continue;
for(int j=1;j<=k[i];++j){
for(int n=i+1;n<=26;++n){
if(!pd[n]) continue;
for(int l=1;l<=k[n];++l){
if(vis[i][j].r < vis[n][l].l) break;
else if(vis[n][l].r < vis[i][j].l) continue;
else if((vis[i][j].l < vis[n][l].l && vis[i][j].r > vis[n][l].l && vis[i][j].r < vis[n][l].r) || (vis[n][l].l < vis[i][j].l && vis[n][l].r > vis[i][j].l && vis[n][l].r < vis[i][j].r)){
ans++;
}
}
}
}
}
printf("%d",ans);
return 0;
}