蚂蚁题解(标题6个字)

题目 ID:1401

思路

模拟

细节

我们发现相撞的时候要么是坐标为整数,要么就是小数点后面是 5 ,所以我们可以将坐标乘 2 。然后模拟 4000 秒即可。

代码

#include<bits/stdc++.h>
using namespace std;
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
struct node
{
	int x,y;
	bool f;
	char d;
}a[55];
int n,ans,vis[55];
string s;
int main()
{
	cin>>n;
	ans=n;
	for(int i=1;i<=n;++i) cin>>a[i].d;
	for(int i=1;i<=n;++i) cin>>a[i].x>>a[i].y,a[i].x*=2,a[i].y*=2;
	for(int i=1;i<=4000;++i)//模拟4000秒 
	{
		memset(vis,0,sizeof(vis));
		for(int j=1;j<=n;++j)
		if(!a[j].f)//没有小时 
		{
			int d;
			if(a[j].d=='N') d=0;
			if(a[j].d=='E') d=1;
			if(a[j].d=='S') d=2;
			if(a[j].d=='W') d=3;
			//确定放向 
			a[j].x+=dx[d];
			a[j].y+=dy[d];
			//走一格 
		}
		for(int j=1;j<=n;++j)
		for(int k=j+1;k<=n;++k)//看看有没有相撞 
		if(!a[j].f&&!a[k].f&&a[j].x==a[k].x&&a[j].y==a[k].y) vis[j]=1,vis[k]=1;//相撞 
		for(int j=1;j<=n;++j)
		if(vis[j]) a[j].f=1,ans--;//然他们消失 
	}
	cout<<ans;
	return 0;
}
1 个赞

这是不是AC代码?

1 个赞

是怎么了

1 个赞

AC代码举报了会删帖的,改成伪代码

1 个赞

这不也弄得AC代码

1 个赞

改成核心代码行了吗?

1 个赞

可以的 但头文件输入输出不可以加

1 个赞

他不也加了

1 个赞

他都过去几个月了,没被举报算他运气好

不是哥们?

我们提高的写题解都没这个限制的,我发过一些都没啥(狗头保命