QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#773087#7751. Palindrome PathCrysflyWA 19ms4108kbC++142.6kb2024-11-23 00:45:202024-11-23 00:45:20

Judging History

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

  • [2024-11-23 00:45:20]
  • 评测
  • 测评结果:WA
  • 用时:19ms
  • 内存:4108kb
  • [2024-11-23 00:45:20]
  • 提交

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 flag;

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] && flag) {
		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){
		int xx=x+dx[d],yy=y+dy[d];
		if(a[xx][yy] && !vs[xx][yy]) {
			mov(d^2);
			dfs(xx,yy);
			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;
	dfs(tx,ty);
	flag=1;
//	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
*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3612kb

input:

2 2
11
11
1 1 2 2

output:

DRUDLURRULDURD

result:

ok Valid Solution (Length = 14).

Test #2:

score: 0
Accepted
time: 19ms
memory: 4108kb

input:

2 2
10
01
1 1 2 2

output:

-1

result:

ok No Solution.

Test #3:

score: 0
Accepted
time: 0ms
memory: 3788kb

input:

1 1
1
1 1 1 1

output:

RR

result:

ok Valid Solution (Length = 2).

Test #4:

score: 0
Accepted
time: 0ms
memory: 3628kb

input:

5 4
1111
1111
1111
1111
1111
4 2 4 2

output:

ULLDDDDRUUUDRDDRUUUUDDDDLUULDDLUUUURRDRRDRRUUUULDDLUULDDDDUUUURDDRDUUURDDDDLLU

result:

ok Valid Solution (Length = 78).

Test #5:

score: 0
Accepted
time: 0ms
memory: 3556kb

input:

5 5
11111
10101
11111
10101
11111
1 4 5 5

output:

DDDDRRUUUULRRRDDLRDDLRUUUULLDDLRDDLLUUUURRUUUULLDDRLDDLLUUUURLDDRLDDRRRLUUUURRDDDD

result:

ok Valid Solution (Length = 82).

Test #6:

score: -100
Wrong Answer
time: 0ms
memory: 3556kb

input:

5 3
111
100
111
001
111
4 3 3 2

output:

LUURRLLDDRRDDLLRRUULRRLUURRLLDDRRDDLLRRUUL

result:

wrong answer (1,1) Not Visited