专栏文章

题解:P13059 [GCJ 2020 #1C] Overexcited Fan

P13059题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miozf11f
此快照首次捕获于
2025/12/03 03:39
3 个月前
此快照最后确认于
2025/12/03 03:39
3 个月前
查看原文
非常简单的一道题,那就来水一篇题解。

思路

我们只需要模拟小猫的行径,并且每走一步,比较此时两人间的曼哈顿距离(即水平距离加竖直距离)以及你在这段时间内能走的最远距离,如是能走到,则输出此刻的时间;反之,输出 IMPOSSBLE\texttt{IMPOSSBLE}
代码不难,但一定一定不能忘记计算曼哈顿距离要加绝对值
CPP
#include<bits/stdc++.h>
#define man main //纯玩,小朋友不要模仿 
using namespace std;

int pd(int x,int y,string s) //写成函数可以更好地处理IMPOSSIBLE的情况 
{
	for(int i = 0;i < s.size();i++)
	{
		if(s[i] == 'N') y++;
		else if(s[i] == 'S') y--;
		else if(s[i] == 'E') x++;
		else if(s[i] == 'W') x--;
		if(abs(x) + abs(y) <= i + 1) return i + 1; //绝对值!!! 
	}
	return 0;
}

int man()
{
	int t;
	cin >> t;
	for(int l = 1;l <= t;l++)
	{
		int x,y;
		string s;
		cin >> x >> y >> s;
		int t = pd(x,y,s);
		cout << "Case #" << l << ": ";
		if(t) cout << t << endl;
		else cout << "IMPOSSIBLE" << endl;
	}
 	return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...