求助,#2TLE
查看原帖
求助,#2TLE
658620
Youth_Glory楼主2024/7/15 09:57
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

const ll MAX=1e6;
ll T,n,m,maxl,maxr,lr,maxu,maxd,ud;
ll memolr[2*MAX+5],memoud[2*MAX+5];//1~1e6:x<0  1e6+1~2e6:x>0
char s[MAX+5];

int main()
{
	scanf("%lld",&T);
	while(T--){
		scanf("%lld%lld",&n,&m);
		scanf("%s",&s);
		maxl=maxr=lr=maxu=maxd=ud=0;
		memset(memolr,0,sizeof memolr);
		memset(memoud,0,sizeof memoud);
		for(ll i=0;i<strlen(s);i++){
			if(s[i]=='L')maxl=max(maxl,(--lr)<0?(~lr+1):0),memolr[(lr<0?(~lr+1):lr+MAX)]++;
			if(s[i]=='R')maxr=max(maxr,(++lr)>0?lr:0),memolr[(lr<0?(~lr+1):lr+MAX)]++;
			if(s[i]=='U')maxu=max(maxu,(--ud)<0?(~ud+1):0),memoud[(ud<0?(~ud+1):ud+MAX)]++;
			if(s[i]=='D')maxd=max(maxd,(++ud)>0?ud:0),memoud[(ud<0?(~ud+1):ud+MAX)]++;
		}
		ll x,y,ljt;
		while(maxl+maxr+1>m)ljt=(memolr[maxl]<=memolr[MAX+maxr])?(maxl>0?--maxl:--maxr):(maxr>0?--maxr:--maxl);
		y=maxl+1;
		while(maxu+maxd+1>n)ljt=(memolr[maxu]<=memolr[MAX+maxd])?(maxu>0?--maxu:--maxd):(maxd>0?--maxd:--maxu);
		x=maxu+1;
		printf("%lld %lld\n",x,y);
	}
	return 0;
}
2024/7/15 09:57
加载中...