codeforces 724B Batch Sort

来源:互联网 发布:人工智能需要哪些技术 编辑:程序博客网 时间:2024/06/05 22:43

题意

每行的是1到m的一个排列,每行可以挑两个元素交换,可以交换两列一次,至多n+1个操作,问一系列操作后能否满足每行是1到m的递增排列。

思路

这题思路很飘,操作没有顺序,枚举交换列的操作,交换完成后再利用行操作看能否达到要求。

代码

/* ********************************Author          : danmuCreated Time    : 2016年10月10日 星期一 20时48分42秒File Name       : a.cpp******************************** */#include <algorithm>#include <iostream>#include <cstdlib>#include <cstring>#include <iomanip>#include <string>#include <vector>#include <cstdio>#include <stack>#include <queue>#include <cmath>#include <list>#include <map>#include <set>#define rep(i,x,y) for(int i=x;i<=y;++i)#define _rep(i,x,y) for(int i=x;i>=y;--i)#define CL(S,x) memset(S,x,sizeof(S))#define CP (S1,S2) memcpy(S1,S2,sizeof(S2))#define ALL(x,S) for(x=S.begin();x!=S.end();++x)#define ULL unsigned long long#define PI 3.1415926535#define INF 0x3f3f3f3f#define LL long longconst int maxn = 1e6;const int mod = 1e9 + 7;const double eps = 1e-8;using namespace std;int a[30][30];int n,m;bool check(){    for(int i=1;i<=n;++i){        int tmp=0;        for(int j=1;j<=m;++j){            if(a[i][j]!=j){                if(a[i][a[i][j]]==j) ++tmp;                else return false;            }        }        if(tmp>2) return false;    }    return true;}void print(){    for(int i=1;i<=n;++i){        for(int j=1;j<=m;++j){            printf("%d ",a[i][j]);        }        puts("");    }}int main(){    //freopen("in.txt", "r", stdin);    //freopen("out.txt", "w", stdout);    int flag=0;    scanf("%d%d",&n,&m);    for(int i=1;i<=n;++i){        for(int j=1;j<=m;++j){            scanf("%d",&a[i][j]);        }    }    if(check()) flag=1;    for(int i=1;i<=m&&!flag;++i){        for(int j=i+1;j<=m&&!flag;++j){            for(int k=1;k<=n;++k)                swap(a[k][i],a[k][j]);            //printf("%d %d\n",i,j);            //print();            if(check()) {flag=1;break;}            for(int k=1;k<=n;++k)                swap(a[k][i],a[k][j]);        }    }    printf("%s\n",flag?"YES":"NO");    return 0;}

总结

没搞懂操作顺序的地方。

0 0
原创粉丝点击