QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#773065#7751. Palindrome PathCrysflyWA 24ms4212kbC++141.9kb2024-11-23 00:29:572024-11-23 00:29:57

Judging History

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

  • [2024-11-23 00:29:57]
  • 评测
  • 测评结果:WA
  • 用时:24ms
  • 内存:4212kb
  • [2024-11-23 00:29:57]
  • 提交

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;
void 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 ;
	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);
	}
}

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);
	}
	sx=read(),sy=read(),tx=read(),ty=read();
	vis[tx][ty]=1;
	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;
}
/*

*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

2 2
11
11
1 1 2 2

output:

RRLLLLLLDDLLLLLLRR

result:

ok Valid Solution (Length = 18).

Test #2:

score: 0
Accepted
time: 24ms
memory: 4212kb

input:

2 2
10
01
1 1 2 2

output:

-1

result:

ok No Solution.

Test #3:

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

input:

1 1
1
1 1 1 1

output:

RR

result:

ok Valid Solution (Length = 2).

Test #4:

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

input:

5 4
1111
1111
1111
1111
1111
4 2 4 2

output:

RULLLLLLLLLLLLLLLDDLLLLLLLLLLLLLLLUR

result:

wrong answer (1,1) Not Visited