专栏文章
题解:AT_abc398_d [ABC398D] Bonfire
AT_abc398_d题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mipu8x1o
- 此快照首次捕获于
- 2025/12/03 18:02 3 个月前
- 此快照最后确认于
- 2025/12/03 18:02 3 个月前
注意到移动烟雾非常的困难,但是移动人和火堆是简单的。
考虑将移动烟雾转换为移动火堆,火堆每移动到一个为止就在那个位置上放置一个烟雾,用哈希表或者 map 处理即可。
代码:
CPP#include<bits/stdc++.h>
#define ll long long
#define mkp(x,y) make_pair(x,y)
using namespace std;
ll read(){
ll x=0,f=1;char ch=getchar_unlocked();
while(ch<'0'||'9'<ch){if(ch=='-')f=-1;ch=getchar_unlocked();}
while('0'<=ch&&ch<='9'){x=x*10+ch-'0';ch=getchar_unlocked();}
return f*x;
}
const int N = 2e5+5;
int n,x,y,p=0,q=0;
char s[N],ans[N];
map<pair<int,int>,bool>vis;
int main(){vis[mkp(0,0)]=1;
n=read();x=read(),y=read();
scanf("%s",s+1);for(int i=1;i<=n;i++){
if(s[i]=='N')p++,x++;
if(s[i]=='S')p--,x--;
if(s[i]=='W')q++,y++;
if(s[i]=='E')q--,y--;
vis[mkp(p,q)]=1;
ans[i]=vis[mkp(x,y)]?'1':'0';
}puts(ans+1);
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...