题解:#6364.笨笨机器人 如果你也时间超限:) 审核通过

lyh069 维什戴尔 2025-08-10 17:46:52 17

本人蒟蒻,请奆佬手下留情

在仔细看了题目后,理解题意,我们可以简单将题目拆分变成

“输入一串命令串(字符串)和t(时间),命令串里面有大写字母和其他字符,其中,当命令为‘S’时,y--;当命令为‘N’时,y++;当命令为‘W’时,x--;当命令为‘E’时,x++。每一次的命令都会增加一秒的时间,如果命令结束时还有时间,则重新执行命令串,直到时间结束。”

我们可以用while循环,直到t=0,这不是纯纯水题?一开始我确实是这样想的……

while(t!=0){
	char n=s[i];
	if(n=='E') x++;
	else if(n=='W') x--;
	else if(n=='N') y++;
	else if(n=='S') y--;
	else continue;
	t--;
}

如果你也是同样的想法,那么恭喜你

爆了!

but why?为什么会时间超限?我改了好久,直到我看了一眼数据……

对于 100%的数据,T≤2×10^9,|S|≤5×10^3

我牛魔的,t能取到二十亿,直接时间爆掉了

解决方法

就算这样也掩盖不了这是一道水题,我们只需要将命令串执行一遍并记录x和y的变化,当结束时再用 时间除以命令串的长度乘以x和y的变化(在时间内完整执行命令串的次数),并且以剩余的时间再一次执行命令串,让x和y加上执行的值(剩余时间内能执行的命令),最后的x和y就时机器人的位置了

以及附上本人不完全AC代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+7;
int x=0,y=0;
string a;
int sum=0;
int t;
int main(){
不要抄袭:)))
	freopen("rodot.in","r",stdin);
	freopen("rodot.out","w",stdout);
	cin>>a>>t;
	int buyaochaoxi=a.size();
	for(int i=0;i<m;i++){
		char n=a[i];
		if(n=='E') x++;
		else if(n=='W') x--;
		else if(n=='N') y++;
		else if(n=='S') y--;
		else continue;
		sum++;
	}
	int e=t%sum,q=t/sum;
	x=e-1,y*=e+1;
	for(int i=0;i<m && q>0;i++)char n=a[i];
		if(n=='E') x++;
		else if(n=='W') x--else if(n=='N') y++;
		else if(n=='S') y--;
		else continue;
		q--;
	}
	cout<<x<<' '<<y;   
不要抄袭:)))
}
{{ vote && vote.total.up }}

共 4 条回复

lhy263

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

wcsp2503

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%zpnb

gouzihenbugoulxh CSP-J2二等

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ORZORZ

lyh106 CSP-J2二等

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5