Kitty猫基因编码
原题链接:https://www.luogu.org/problemnew/show/2562#sub
简单的递归题。记录一下前缀和然后二分求解就好。
参考代码:
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #define maxn 2000005 5 using namespace std; 6 int s[maxn]; 7 int num; 8 void find(int l,int r){ 9 if (s[r] - s[l-1] == 0){ 10 printf("A"); 11 return; 12 } 13 14 if (s[r] - s[l-1] == r - l + 1){ 15 printf("B"); 16 return ; 17 } 18 printf("C"); 19 int mid = (l + r) >> 1; 20 find(l,mid); 21 find(mid+1,r); 22 } 23 int main(){ 24 while (1){ 25 char c = getchar(); 26 if (c != '0' && c != '1') 27 break; 28 s[++num] = s[num-1] + c - '0'; 29 } 30 find(1,num); 31 return 0; 32 }
一切无法杀死我的,都将使我变得更加强大。