D - Bonfire /

题目链接:https://atcoder.jp/contests/abc398/tasks/abc398_d

题意:

(0,0)位置有一个篝火每s产生1个烟,根据风向烟都移动,问在这期间什么时候烟到达(r,c)的位置

思路:

byd的怎么每次D都做不出来
把烟看成静止不动的,篝火和人看作移动的物体,那么根据风向它俩就反向着移动
由于烟每s都会生成所以把每次篝火的位置记录一下,人踩到即烟到达(r,c)

void solve(){
	int n,r,c;cin>>n>>r>>c;
	set<pii>pos;
	pii now={0,0};
	map<char,pii>mp;
	mp['W']={0,1};
	mp['N']={1,0};
	mp['S']={-1,0};
	mp['E']={0,-1};
	string s;cin>>s;s=" "+s;
	pos.insert({0,0});
	for(int i=1;i<=n;i++){

		now.fi+=mp[s[i]].fi;
		now.se+=mp[s[i]].se;
		r+=mp[s[i]].fi;
		c+=mp[s[i]].se;
		pos.insert({now.fi,now.se});
		if(pos.count({r,c}))cout<<1;else cout<<0;
	}
}
posted @ 2025-03-23 09:17  Marinaco  阅读(23)  评论(0)    收藏  举报
//雪花飘落效果