当前位置: 代码迷 >> 综合 >> 【分析】【转换模型】AGC019B Reverse and Compare
  详细解决方案

【分析】【转换模型】AGC019B Reverse and Compare

热度:116   发布时间:2023-09-27 05:25:44.0

分析:

由于只能换一次,所以我们考虑换哪些会重复:
首先,对于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); } 
  相关解决方案