分析:
由于只能换一次,所以我们考虑换哪些会重复:
首先,对于al=ara_l=a_ral?=ar?的情况,是一定会重复的,因为其等价于交换al+1,ar?1a_{l+1},a_{r-1}al+1?,ar?1?
对于al≠ara_l≠a_ral???=ar?的情况,分几种情况(包含,相交,一侧相切)讨论一下发现都是不会重复的。
所以方案数就是这个序列中,al≠ara_l≠a_ral???=ar?的方案数
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define SF scanf #define PF printf #define MAXN 200010 using namespace std; typedef long long ll; char s[MAXN]; ll ans,cnt[30]; int main(){
SF("%s",s);int len=strlen(s);for(int i=0;i<len;i++){
ans+=(i-cnt[s[i]-'a']);cnt[s[i]-'a']++;}PF("%lld",ans+1ll); }