abc f求调
  • 板块学术版
  • 楼主mskqwq
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/6/15 22:31
  • 上次更新2024/6/15 22:55:29
查看原帖
abc f求调
876598
mskqwq楼主2024/6/15 22:31

wa*16,也许思路有问题

#include <bits/stdc++.h>
#define ll long long
using namespace std;
inline int read(){
   char ch=getchar();int f=1,x=0;
   while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}
   while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
   return x*f;
}
const double eps=1e-9;
const int N=110,inf=1e9,mod=998244353;
int n,m,k,d[3][2]={{0,-1},{1,0},{0,1}},vis[N][N],tag[N][N];
bool dfs(int x,int y,int k){
    if(x==n&&y==m&&k==0){
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)   
                vis[i][j]=tag[i][j];
        vis[n][m]=1;
        return 1;
    }
    if(k<0) return 0;
    tag[x][y]=1;
    for(auto [a,b]:d){
        int nx=x+a,ny=y+b;
        if(nx>0&&nx<=n&&ny>0&&ny<=m&&n-nx+m-ny==k-1)
            return dfs(nx,ny,k-1);     
    }
    bool res=0;
    if(x&1){
        if(y>1) res=dfs(x,y-1,k-1);
        else res=dfs(x+1,y,k-1);
    }else{
        if(y<m) res=dfs(x,y+1,k-1);
        else res=dfs(x+1,y,k-1);
    }
    tag[x][y]=0;
    return res;
}
signed main(){
    n=read(),m=read(),k=read()-1;
    if(!dfs(1,m,k)){puts("No");exit(0);}
    // for(int i=1;i<=n;i++,cerr<<'\n')
    //     for(int j=1;j<=m;j++) cerr<<vis[i][j]<<' ';
    puts("Yes");
    for(int i=1;i<=2*m-1;i++) putchar('+');
    puts("S+");
    for(int i=3;i<=2*n+1;i++){
        if(i&1){
            int x=(i-1)/2;
            printf("+o");
            for(int j=1;j<m;j++){
                putchar((vis[x][j]^vis[x][j+1])?'|':'.');
                putchar('o');
            }
            puts("+");
        }else{
            int x=(i-2)/2;
            putchar('+');
            for(int j=1;j<=m;j++){
                putchar((vis[x][j]^vis[x+1][j])?'-':'.');
                putchar('+');
            }
            puts("");
        }
    }
    for(int i=1;i<=2*m-1;i++) putchar('+');
    puts("G+");
    return 0;
}
2024/6/15 22:31
加载中...