求助今晚 ABC 的 F 题
查看原帖
求助今晚 ABC 的 F 题
648933
HarmonicQuadrilatera楼主2024/6/15 21:47
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,k;
char c[5001][5001];
inline void op()
{
	cout<<"Yes\n";
	for(int i=1;i<=2*n+1;i++)
	{
		for(int j=1;j<=2*m+1;j++)
			putchar(c[i][j]);
		cout<<endl;
	 }
}
signed main()
{
//	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>n>>m>>k;
	if(k<n||n%2!=k%2) return cout<<"No",0;
	for(int i=1;i<=2*n+1;i++)
		for(int j=1;j<=2*m+1;j++)
			c[i][j]='.';
	for(int i=2;i<=2*n+1;i+=2)
		for(int j=2;j<=2*m+1;j+=2)
			c[i][j]='o';
	for(int i=1;i<=2*n+1;i+=2)
		for(int j=1;j<=2*m+1;j+=2)
			c[i][j]='+';
	for(int i=1;i<=2*n+1;i+=2*n)
		for(int j=1;j<=2*m+1;j++) c[i][j]='+';
	for(int i=1;i<=2*n+1;i++)
		for(int j=1;j<=2*m+1;j+=2*m) c[i][j]='+';
	c[1][2*m]='S',c[2*n+1][2*m]='G';
	if(m==1){op();return 0;}
	if(n%2==0||k<=n*m-m+1)
	{
		int s=(k-n)/2/(m-1),r=(k-n)/2%(m-1),st=s;if(r) st++;
		for(int i=2*n,_=s;_>0;_--,i-=4)
		{
			for(int j=4;j<=2*m;j+=2) c[i-1][j]='-';
			for(int j=2;j<=2*m-2;j+=2) c[i-3][j]='-';
		}
		if(r>0)
		{
			int i=2*n-s*4;
			c[i][2*m+1-2*r-2]=c[i-2][2*m+1-2*r-2]='|';
			for(int j=2*m+1-2*r-2+3;j<=2*m;j+=2) c[i-1][j]='-';
			for(int j=2*m+1-2*r-2+1;j<=2*m-2;j+=2) c[i-3][j]='-';
		}
		for(int i=2*n-4*st;i>=2;i-=2) c[i][2*m-1]='|';
	}
	else
	{
		int s=(n-1)/2;
		for(int i=2*n,_=s;_>0;_--,i-=4)
		{
			for(int j=4;j<=2*m;j+=2) c[i-1][j]='-';
			for(int j=2;j<=2*m-2;j+=2) c[i-3][j]='-';
		}
		int r=(k-n*m+m-1)/2;
		for(int i=1;i<=r;i++)
		{
			c[2][1+4*i]='|';
			c[4][4*i-1]='|';
			c[3][4*i-2]=c[3][4*i]='.';
		}
	}
	op();
	return 0;
}

本地能过三个样例,交上去判我两个样例 WA,怎么会是呢?

2024/6/15 21:47
加载中...