「CF#664」B Boboniu Plays Chess(div.2)

题意

Link

给你一个\(n \times m\)的图,可以访问同一行或同一列的点,给出起点\((sx,sy)\)

求访问所有点的顺序

题解

嗯.......我吃了1次fst(而且赛后才做出来的

刚开始直接暴力dfs,但是没打出来

其实是个模拟题,顺序不唯一

所以可以先把起点行跑完,然后再按照“S”型跑每一列就行

特判一下起点和起点行

Code

#include <bits/stdc++.h>
using namespace std;

#define RE register

inline void fread(int &x){
    x=0;
    int f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-')f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        x=(x<<1)+(x<<3)+(ch^48);
        ch=getchar();
    }
    x*=f;
}

int main(){
    int n,m,sx,sy;
    fread(n);
    fread(m);
    fread(sx);
    fread(sy);
    printf("%d %d\n",sx,sy);
    for(RE int i=1;i<=n;i++)if(i!=sx)printf("%d %d\n",i,sy);
    int p=n;
    for(RE int i=1;i<=m;i++){
        if(i==sy)continue;
        if(p==n){
            for(RE int k=n;k>=1;k--){
                printf("%d %d\n",k,i);
            }
            p=1;
        }else if(p==1){
            for(RE int k=1;k<=n;k++){
                printf("%d %d\n",k,i);
            }
            p=n;
        }
    }
}
posted @ 2021-08-13 11:27  sushitong  阅读(45)  评论(0)    收藏  举报