彩带印制
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
【题目描述】
小灰灰要为校园活动印制一条彩带.彩带从左到右分成 格,开始时每一格都是空白.印好后,第 格的颜色应当是 .颜色的编号为 .
每种颜色的印版最多使用一次:选择一种尚未使用的颜色和一个非空连续区间,将这个区间内的所有格子印成这种颜色.如果格子原来已有颜色,新颜色会覆盖原颜色.
印制分若干轮进行.一轮中可以使用多种颜色,但这一轮选择的所有区间必须两两没有公共格子.这一轮结束后,才能开始下一轮;后面的轮次可以覆盖前面轮次印下的颜色.可以不使用某些颜色.
请问最少需要多少轮,才能使彩带的每一格都变成要求的颜色?如果无法完成,输出 .
【输入格式】
第一行包含两个整数 ,分别表示彩带的格数和可用颜色数.
第二行包含 个整数 ,表示各格要求的颜色.
【输出格式】
输出一个整数,表示最少需要的轮数;如果无法完成,输出 .
【样例 1】
输入
6 4
1 2 3 2 1 4
输出
3
解释
可以按照以下方式印制:
- 第一轮,用颜色 印制区间 ,用颜色 印制区间 .
- 第二轮,用颜色 印制区间 .
- 第三轮,用颜色 印制区间 .
颜色 必须一次印到第 格和第 格,因此也会印到中间的格子;颜色 必须在它之后使用.同理,颜色 必须在颜色 之后使用.所以至少需要三轮.
【样例 2】
输入
5 2
1 2 1 2 1
输出
-1
解释
颜色 的一次印制必须覆盖 ,颜色 的一次印制必须覆盖 .如果先用颜色 ,第 格最后会是颜色 ;如果先用颜色 ,第 格最后会是颜色 .两种颜色也不能在同一轮印制,因此无法完成.
【下发样例】
Data/sample1.in与Data/sample1.ans:题面中的样例 1.Data/sample2.in与Data/sample2.ans:题面中的样例 2.Data/sample3.in与Data/sample3.ans:,满足子任务 1.Data/sample4.in与Data/sample4.ans:,满足子任务 2.Data/sample5.in与Data/sample5.ans:,满足子任务 3.Data/sample6.in与Data/sample6.ans:,该样例无特殊限制.Data/sample7.in与Data/sample7.ans:,该样例无特殊限制.
【数据规模与约定】
对于所有数据,保证 ,,所有输入均为整数.
本题采用捆绑测试.只有通过一个子任务的所有测试点,才能获得该子任务的分数.
| 子任务编号 | 分数 | 附加限制 |
|---|---|---|
| 1 | 15 | , |
| 2 | 25 | |
| 3 | 20 | 每种出现过的颜色,其最后一次出现的位置与第一次出现的位置之差不超过 |
| 4 | 40 | 无 |