2 条题解

  • 0
    @ 2025-10-8 16:55:00
    #include <bits/stdc++.h>
    using namespace std;
    int n, a[1100], b[4], c[4][4], ans;
    int main()
    {
        scanf("%d", &n);
        memset(b, 0, sizeof(b)); memset(c, 0, sizeof(c));
        for(int i=1; i<=n; i++){scanf("%d", &a[i]); b[a[i]]++;}
        b[3] += b[2] += b[1]; b[0] = 0;
        for(int i=b[0]+1; i<=b[1]; i++) c[1][a[i]]++;
        for(int i=b[1]+1; i<=b[2]; i++) c[2][a[i]]++;
        for(int i=b[2]+1; i<=b[3]; i++) c[3][a[i]]++;
        printf("%d\n", min(c[1][2], c[2][1]) + min(c[2][3], c[3][2]) + min(c[1][3], c[3][1]) + 2*abs(c[1][2]-c[2][1]));
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:54:53
      #include <bits/stdc++.h>
      using namespace std;
      int n,a[1100],b[4],c[4][4],ans;
      int main()
      {
          scanf("%d",&n);
          memset(b,0,sizeof(b));memset(c,0,sizeof(c));
          for(int i=1;i<=n;i++){scanf("%d",&a[i]);b[a[i]]++;}
          b[3]+=b[2]+=b[1];b[0]=0;
          for(int i=b[0]+1;i<=b[1];i++)c[1][a[i]]++;
          for(int i=b[1]+1;i<=b[2];i++)c[2][a[i]]++;
          for(int i=b[2]+1;i<=b[3];i++)c[3][a[i]]++;
          printf("%d\n",min(c[1][2],c[2][1])+min(c[2][3],c[3][2])+min(c[1][3],c[3][1])+2*abs(c[1][2]-c[2][1]));
          return 0;
      }
      • 1

      【思维】[IOI 1996 / USACO2.1] 三值的排序 Sorting a Three-Valued Sequence

      信息

      ID
      1001
      时间
      1000ms
      内存
      128MiB
      难度
      6
      标签
      递交数
      172
      已通过
      52
      上传者