小慕正在开发一个「卷轴展示系统」,系统里存放着成百上千个卷轴名称。他常用 `show` 命令在终端上查看某个分类下的所有卷轴。 然而,卷轴的排列方式有严格的要求:当用户先从上到下浏览、再从左到右浏览时,卷轴名称必须按照字典顺序递增排列。 为了让用户阅读方便,卷轴的展示需满足以下规则: 1. 每行的总字符数不能超过 `viewWidth`。 2. ,并且相邻两列之间必须至少空 2 个空格。 3. 卷轴名称先纵向摆放,再横向排列(即先填满第一列的所有行,再依次填充后续列)。 4. 所有卷轴名称在纵向→横向阅读时,必须是字典序递增的。 小慕的任务是: 给定卷轴展示的最大行宽 `viewWidth` 以及卷轴名称列表 `scrollNames`,计算出展示所有卷轴所需的最少行数。
提示:带虚线的词点一下有通俗解释。
输入描述
* 第一行输入一个整数 `viewWidth`,满足 `30 <= viewWidth <= 200`。 * 第二行输入一个整数 `n`,表示卷轴数量,满足 `1 < n <= 1000`。 * 接下来 `n` 行,每行一个字符串,表示一个卷轴名称 `scrollNames[i]`,满足: * `1 <= len(scrollNames[i]) <= viewWidth` * 只包含字符数字和字母
输出描述
输出一个整数,表示展示所有卷轴所需的最少行数。
示例
示例 1
输入
44 4 FlameOrb20 Crystal9 CrystalC4 EmberStone12
输出
2
说明:将卷轴名称按词典序排序后为: `Crystal9`、`CrystalC4`、`EmberStone12`、`FlameOrb20` 展示效果如下(纵向优先): ``` Crystal9 EmberStone12 CrystalC4 FlameOrb20 ``` 从上到下、再从左到右查看时,顺序为: `Crystal9 → CrystalC4 → EmberStone12 → FlameOrb20`,符合要求。
示例 2
输入
45 10 Altar1 Arcanum3 BeastDen4 BlightWood5 Dragonspire8 EldritchTome2 Moonwell9 ObsidianGate6 PhoenixRoost7 Starfall0
输出
4
说明:排序结果为: `Altar1`、`Arcanum3`、`BeastDen4`、`BlightWood5`、`Dragonspire8`、`EldritchTome2`、`Moonwell9`、`ObsidianGate6`、`PhoenixRoost7`、`Starfall0` 排列如下: ``` Altar1 Dragonspire8 PhoenixRoost7 Arcanum3 EldritchTome2 Starfall0 BeastDen4 Moonwell9 BlightWood5 ObsidianGate6 ```
时间限制 1000 ms · 内存限制 128 MB