zoukankan      html  css  js  c++  java
  • 【CodeForces 266C】Below the Diagonal(模拟)

    题目
    每次把空列换到最后一列,把非空行换到最下一行。

    #include<cstdio>
    #include<algorithm>
    #define N 1005
    using namespace std;
    struct ans{int i,a,b;} a[100005];
    int n,m,x,y,ma[N][N],r[N],c[N];
    int main()
    {
        scanf("%d",&n);
        for(int i=1; i<n; i++)
        {
            scanf("%d%d",&x,&y);
            ma[x][y]=1;
            r[x]++;
            c[y]++;
        }
        for(; n; n--)
        {
            for(int i=1; i<n; i++)
                if(c[i]==0)
                {
                    a[m++]=(ans){2,n,i};
                    for(int j=1; j<=n; j++)
                        swap(ma[j][n],ma[j][i]);
                    swap(c[i],c[n]);
                    break;
                }
            for(int i=1; i<n; i++)
                if(r[i])
                {
                    a[m++]=(ans){1,n,i};
                    swap(ma[n],ma[i]);
                    swap(r[i],r[n]);
                    break;
                }
            for(int i=1; i<=n; i++)
                if(ma[n][i])c[i]--;
        }
        printf("%d
    ",m);
        for(int i=0; i<m; i++)
            printf("%d %d %d
    ",a[i].i,a[i].a,a[i].b);
    }
      
  • 相关阅读:
    初识数据库与SQL语句
    初始面向对象
    集合与深浅copy
    函数进阶
    函数操作
    文件操作
    生成器与列表生成式
    函数名的本质,闭包和迭代
    小数据库
    DAY 5 字典
  • 原文地址:https://www.cnblogs.com/flipped/p/5698536.html
Copyright © 2011-2022 走看看