QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#773083#7751. Palindrome PathCrysflyWA 0ms3616kbC++142.5kb2024-11-23 00:41:232024-11-23 00:41:23

Judging History

你现在查看的是最新测评结果

  • [2024-11-23 00:41:23]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3616kb
  • [2024-11-23 00:41:23]
  • 提交

answer

// what is matter? never mind. 
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
//#pragma GCC target("sse,sse2,sse3,sse4,popcnt,abm,mmx,avx,avx2")
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);++i)
#define Rep(i,a,b) for(int i=(a);i>=(b);--i)
#define ll long long
//#define ll __int128
//#define ull unsigned long long
#define int long long
#define SZ(x) ((int)((x).size()))
#define ALL(x) (x).begin(),(x).end()
using namespace std;
inline int read()
{
	char c=getchar();int x=0;bool f=0;
	for(;!isdigit(c);c=getchar())f^=!(c^45);
	for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+(c^48);
	return f?-x:x;
}

#define fi first
#define se second
#define pb push_back
#define mkp make_pair
typedef pair<ll,ll>pii;
typedef vector<int>vi;

#define maxn 500005
#define inf 0x3f3f3f3f

int n,m,sx,sy,tx,ty;
int a[33][33];

int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};
string opt="DRUL";

bool vis[33][33],vis2[33][33];
string res;

int vis3[33][33],sum3,nd;

bool mov(int d){
	int sum=0;
	memset(vis2,0,sizeof vis2);
	For(i,1,n)For(j,1,m)if(vis[i][j]){
		if(!a[i+dx[d]][j+dy[d]]) vis2[i][j]=1;
		if(a[i-dx[d]][j-dy[d]]) vis2[i-dx[d]][j-dy[d]]=1;
	}
	For(i,1,n)For(j,1,m)sum+=vis2[i][j];
	if(!sum) return 0;
	memcpy(vis,vis2,sizeof vis2);
	res+=opt[d];
	if(a[sx+dx[d]][sy+dy[d]]) sx+=dx[d],sy+=dy[d];
	if(vis[sx][sy]) {
		string rev=res;
		reverse(rev.begin(),rev.end());
		cout<<res+rev<<"\n";
		exit(0);
	}
//	cout<<"now "<<sx<<" "<<sy<<"\n";
//	For(i,1,n)For(j,1,m)cout<<vis2[i][j]<<" \n"[j==m];
	if(res.size()>500000){
		puts("-1");
		exit(0);
	}
	return 1;
}

bool vs[33][33];
void dfs(int x,int y){
	vs[x][y]=1;
	For(d,0,3)
		if(a[x+dx[d]][y+dy[d]] && !vs[x+dx[d]][y+dy[d]]) {
			mov(d^2);
			dfs(x+dx[d],y+dy[d]);
			mov(d);
		}
}

mt19937_64 rnd(64);
void work()
{
	n=read(),m=read();
	For(i,1,n){
		string s;cin>>s;
		For(j,1,m)a[i][j]=(s[j-1]&1),nd+=a[i][j];
	}
	sx=read(),sy=read(),tx=read(),ty=read();
	vis[tx][ty]=1;
	vis3[sx][sy]=1; sum3=1;
	dfs(tx,ty);
//	cout<<"SUM3 "<<sum3<<" "<<nd<<"\n";
	while(1){
		int d=rnd()%4;
		For(_,1,max(n,m)) mov(d);
	}
}
/*

*/
signed main()
{
//	freopen("my.out","w",stdout);
	int T=1;
	while(T--)work();
    return 0;
}
/*
9 30
111111111111111111111111111111
100000000000000000000000000000
111111111111111111111111111111
000000000000000000000000000001
111111111111111111111111111111
100000000000000000000000000000
111111111111111111111111111111
000000000000000000000000000001
111111111111111111111111111111
1 1 9 30
*/

詳細信息

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3616kb

input:

2 2
11
11
1 1 2 2

output:

DRRD

result:

wrong answer (1,2) Not Visited