建筑需要整体结构来维持,不能只靠地基…… —— LazyJazz
[万圣节Party进行时……]
LazyJazz号召大家一起来搭积木,搭一座巨高巨高的积木塔。大家一起先构思了一个最终目标,即最终塔的形状,然后打算分工搭出若干小积木塔,每个小积木塔对应最终塔的某一段结构,最后一个一个摞起来。
积木塔的最终形态由
由于是积木塔,所以塔有可能不稳定,稳定的判定条件是:若一个积木塔有
例如:
一个
.##
##.
.#.
一个
.##
##.
#..
一个
########....
....########
.....##.....
LazyJazz想要把塔搭好,又要避免中间过程出现不稳定结构(即最终积木塔分解成的一段一段的小积木塔都稳定,且在一个一个摞小积木塔时的所有中间形态也都稳定),所以需要聪明的你帮忙提前规划好该如何把最终结构拆成小积木塔结构,保证拆解后层数最多的小积木塔层数最小。你只需要回答拆解后层数最多的小积木塔层数最小是多少即可。
输入格式
第一行一个正整数
接下来
保证输入时给出的积木塔结构是稳定的
输出格式
一个正整数,表示所有可行拆解方案中,拆解后层数最多的小积木塔层数最小是多少?
样例一
input
3
1 3
0 2
1 2
output
1
explanation
该组样例对应题目描述中的第一个例子。可以看出来,即便一个积木一个积木地往上摞,也不会出现不稳定结构。
样例二
input
3
0 8
4 12
5 7
output
2
explanation
该组样例对应题目描述中的第三个例子。最优方案是:从上往下数,前两层划分为一小积木塔,最后一层单独划分成一个小积木塔。
样例三
input
5
3 13
3 13
0 8
4 12
7 8
output
3
explanation
结构如图所示
...##########
...##########
########.....
....########.
.......#.....
最优方案是:从上往下数,前三层划分为一个小积木塔,后两层分开或者不分开皆可。
样例四
见样例数据下载
样例五
见样例数据下载
限制与约定
由于一些原因,本题使用捆绑测试。每个子任务有若干个测试点,分为
子任务 | 分值 | 限制 |
---|---|---|
1 | 30 | |
2 | 30 | |
3 | 35 | |
4 | 5 |
保证输入时给出的积木塔结构是稳定的
时间限制:
空间限制: