2 条题解

  • 0
    @ 2025-10-8 17:01:50

    by hansang:

    #include<bits/stdc++.h>
    using namespace std;
    const int N=5010;
    int a[N], b[N];
    int main(){
        int n; scanf("%d", &n);
        for(int i=1; i<=n; i++){
            char s[5]; scanf("%s", s);
            if(s[0]=='B') a[i]=0;
            else a[i]=1;
        }
        int ans=1e9, res=1e9;
        for(int k=1; k<=n; k++){
            memset(b, 0, sizeof(b));
            bool flag=1;int m=0, sum=0;
            for(int i=1; i<=n; i++){
                sum^=b[i];
                if(!(a[i]^sum)){
                    if(i+k-1>n) {flag=0;break;}
                    sum^=1; b[i+k]^=1;
                    m++;
                }
            }
            if(flag && m<=res) res=m, ans=k;
        }
    	printf("%d %d\n", ans, res);
    	return 0;
    }
    
    • 0
      @ 2025-10-8 17:01:43

      by hansang:

      #include<bits/stdc++.h>
      using namespace std;
      const int N=5010;
      int a[N], b[N];
      int main(){
          int n; scanf("%d", &n);
          for(int i=1; i<=n; i++){
              char s[5]; scanf("%s", s);
              if(s[0]=='B') a[i]=0;
              else a[i]=1;
          }
          int ans=1e9, res=1e9;
          for(int k=1; k<=n; k++){
              memset(b, 0, sizeof(b));
              bool flag=1;int m=0, sum=0;
              for(int i=1; i<=n; i++){
                  sum^=b[i];
                  if(!(a[i]^sum)){
                      if(i+k-1>n) {flag=0;break;}
                      sum^=1, b[i+k]^=1;
                      m++;
                  }
              }
              if(flag && m<=res) res=m,ans=k;
          }
      	printf("%d %d\n", ans, res);
      	return 0;
      } 
      • 1

      USACO(35)穷举+差分1:翻转奶牛P2882 [USACO07MAR] Face The Right Way G

      信息

      ID
      2632
      时间
      1000ms
      内存
      128MiB
      难度
      10
      标签
      递交数
      8
      已通过
      3
      上传者