求助站外题
  • 板块学术版
  • 楼主3a51_
  • 当前回复11
  • 已保存回复11
  • 发布时间2022/5/21 01:24
  • 上次更新2023/10/28 01:00:42
查看原帖
求助站外题
327444
3a51_楼主2022/5/21 01:24

给定一个长度为 nn 的序列,这里面有 mm 种数字。

例如:n=5,m=2\texttt{n=5,m=2}

序列为:1 2 2 1 2\texttt{1 2 2 1 2}

例如:n=7,m=4\texttt{n=7,m=4}

序列为:1 4 2 3 1 3 2\texttt{1 4 2 3 1 3 2}

定义一次操作是在任何一个两数之间的空隙里面插入一个 1m1\sim m 的数。边缘也算空隙。

例如:n=5,m=2\texttt{n=5,m=2}

序列为:1 2 2 1 2\texttt{1 2 2 1 2}

一次合法操作为:1 2 1 2 1 2\texttt{1 2 \color{red}1\color{black} 2 1 2}

也可以是:1 1 2 2 1 2\texttt{\color{red}1 \color{black}1 2 2 1 2}

等等。

假如在某个时刻(没执行任何操作前除外),某个序列的子区间(长度 2\ge2)的数字完全相同,那么可以全部消除。

例如:n=5,m=2\texttt{n=5,m=2}

序列为:1 2 2 1 2\texttt{1 2 2 1 2}

一次合法操作为:1 2 2 1 1 2\texttt{1 2 2 \color{red}1 \color{black}1 2}

接下来会自动消除序列的第 454\sim 5 个,使序列变为 1 2 2 2\texttt{1 2 2 2}

然后会自动消除序列的第 242\sim 4 个,是序列变为 1\texttt{1}

现在你需要求出最少多少次操作能使序列清空。

样例

Input:\texttt{Input:}

10 5
1 1 2 3 4 3 3 5 5 2

Output:\texttt{Output:}

3

样例解释:

可行的一种方案是:

原序列为 1 1 2 3 4 3 3 5 5 2\texttt{1 1 2 3 4 3 3 5 5 2}

接下来插入 1 1 2 3 4 4 3 3 5 2\texttt{1 1 2 3 \color{red}4 \color{black}4 3 3 5 2}

第一次序列会自动消除变为 1 1 2 3 3 3 5 2\texttt{1 1 2 3 3 3 5 2}

第二次序列会自动消除变为 1 1 2 5 2\texttt{1 1 2 5 2}

然后插入 1 1 2 5 5 2\texttt{1 1 2 5 \color{red}5 \color{black}2}

第一次序列会自动消除变为 1 1 2 2\texttt{1 1 2 2}

第二次序列会自动消除变为 1 1\texttt{1 1}

注意:这里的两个 11 是序列本身就有的,不会自动消除。

最后插入 1 1 1\texttt{1 1\color{red} 1}

这样序列就清空了,总共需要 33 步。

2022/5/21 01:24
加载中...