#2 WA 求调。
查看原帖
#2 WA 求调。
1296826
lcfollower楼主2024/7/26 11:53

rt,第 2424 行有误,谢谢。

#include <bits/stdc++.h>
using namespace std;

#define int long long	
#define db double
#define inf 0x3f3f3f3f
#define infi 0x3f3f3f3f3f3f3f3fll
#define _Dark_Star exit(0)
#define up(i,x,y) for(register int i=x;i<=y;++i)
#define dn(i,x,y) for(register int i=x;i>=y;--i)
#define eps 1e-6

using namespace std;

inline int read(){int x=0;bool f=0;char ch=getchar();while(!isdigit(ch)){f|=(ch=='-');ch=getchar();}while(isdigit(ch))x=(x<<1)+(x<<3)+(ch^48),ch=getchar();return (f?-x:x);}
inline void write(int x){if(x<0)putchar('-'),x=-x;if(x>9)write(x/10);putchar(x%10|48);}
inline void writeln(int x){write(x),putchar('\n');}
inline void writesp(int x){write(x),putchar(' ');}
int n;
char s[131075];
inline int good(int l ,int r ,char k){
  if(l == r) return s[l] != k;
  int lft = 0 ,rgt = 0 ,mid = ((l + r) >> 1ll);
  up(i,1,mid) lft += (s[i] != k);
  up(i,mid + 1,r) rgt += (s[i] != k);
  int ans = min(lft + good(mid + 1, r ,k + 1) ,rgt + good(l ,mid , k + 1));
  return ans;
} signed main(){
  n = read();
  while(n --){
    int len = read();
    up(i,1,len) cin >> s[i];
    writeln(good(1 ,len ,'a'));
  }
  return 0;
}
2024/7/26 11:53
加载中...