A2824 | Build Gates S
来源USACO / 2016
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
FarmerJohn 打算在他农场的一部分,建设一个围栏。但是因为没有认真做事,建造完成后,围栏变成一个很奇怪的形状。
具体来说,FJ 从 $(0,0)$ 出发,走了 $N$ 步,每步移动一单位(向东、向南、向西或向东)。
他走过的每一步,都会留下一段单位长度的围栏。例如,如果他的第一步向北,他建造一单位从 $(0,0)$ 到 $(0,1)$ 的围栏。
FJ 可能重复到达点多次,他也可能重复建造一段围栏多次。如果他的路径穿过一段已经建成的围栏,他的围栏也有可能会有交叉。
不用说,FJ 看到完成的围栏时,一定很沮丧。特别的,他发现一些区域被围栏封闭起来,从而无法到达。FJ 想在围栏上,安装一些门来解决这个问题。
门可以安装在任意一段单位长度(注:必须是之前走过的某一步)的围栏上,从而可以穿越这段围栏的两侧。
请计算 FJ 最少需要安装多少个门,才能保证农场上任意区域到任意区域都可到达。
具体来说,FJ 从 $(0,0)$ 出发,走了 $N$ 步,每步移动一单位(向东、向南、向西或向东)。
他走过的每一步,都会留下一段单位长度的围栏。例如,如果他的第一步向北,他建造一单位从 $(0,0)$ 到 $(0,1)$ 的围栏。
FJ 可能重复到达点多次,他也可能重复建造一段围栏多次。如果他的路径穿过一段已经建成的围栏,他的围栏也有可能会有交叉。
不用说,FJ 看到完成的围栏时,一定很沮丧。特别的,他发现一些区域被围栏封闭起来,从而无法到达。FJ 想在围栏上,安装一些门来解决这个问题。
门可以安装在任意一段单位长度(注:必须是之前走过的某一步)的围栏上,从而可以穿越这段围栏的两侧。
请计算 FJ 最少需要安装多少个门,才能保证农场上任意区域到任意区域都可到达。
输入格式
第一行一个整数 $N$。
第二行包含一个长度为 $N$ 的字符串,描述 FJ 的路径。每个字符为 $\tt N$(北),$\tt E$(东),$\tt S$(南),或 $\tt W$(西)。
第二行包含一个长度为 $N$ 的字符串,描述 FJ 的路径。每个字符为 $\tt N$(北),$\tt E$(东),$\tt S$(南),或 $\tt W$(西)。
输出格式
输出一个整数,表示为了保证农场所有区域的连通性,FJ 最少需要安装多少个门。
输入输出样例
输入 #1
14 NNNESWWWSSEEEE
输出 #1
2
注意,如果农场初始连通,答案就是 $0$。
### 数据范围
$1\le n\le 1000$。
### 数据范围
$1\le n\le 1000$。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?