题目链接: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;}
}