QOJ.ac

QOJ

Time Limit: 2.0 s Memory Limit: 1024 MB Total points: 100 Hackable ✓

#6828. 传家宝画作

Statistics

伟大的艺术家 Little Desprado2 有一台小型绘画机器人来创作艺术品。

今天,他画了一个被分成 $n$ 个格子的环,并有 $m$ 种颜色。他想按照自己的意愿给这个环上色。然而,由于一些技术问题——例如为了节省成本使用传家宝打印喷嘴——机器人每次必须给恰好 $k$ 个连续的格子涂上相同的颜色。此外,强力有机颜料可以覆盖之前的画作,这意味着后涂上的颜色会覆盖之前的颜色。

Little Desprado2 想知道,从空白的格子开始,要达到给定的图案,机器人最少需要涂色多少次,如果无法完成任务,则输出 -1。

输入格式

第一行包含一个整数 $T$ ($1 \le T \le 10^5$),表示测试用例的数量。

对于每个测试用例,第一行包含三个整数 $n, m$ 和 $k$ ($1 \le n, m \le 10^6, 1 \le k \le n$),分别表示格子的数量、颜色的种类以及机器人每次涂色的格子数。第二行包含 $n$ 个整数 $c_1, c_2, \dots, c_n$ ($1 \le c_i \le m$),$c_i$ 表示 Little Desprado2 想要的第 $i$ 个格子的颜色。

初始时没有任何颜色,为了方便起见,可以将未涂色的格子视为颜色 -1。

保证所有测试用例的 $n$ 之和不超过 $10^6$。

输出格式

对于每个测试用例,在单独的一行中输出一个整数,表示机器人最少需要涂色的次数。如果任务无法完成,则输出 -1。

样例

输入 1

3
11 4 2
1 1 1 2 2 3 3 3 4 4 1
5 2 1
1 2 1 2 1
6 2 2
1 2 1 2 1 2

输出 1

6
5
-1

说明

对于第一个样例,一种最优策略是:

  1. 用颜色 1 涂第 11 个格子和第 1 个格子。注意这是一个环,所以第 11 个格子和第 1 个格子是相邻的。
  2. 用颜色 1 涂第 2 个格子和第 3 个格子。
  3. 用颜色 2 涂第 4 个格子和第 5 个格子。
  4. 用颜色 3 涂第 6 个格子和第 7 个格子。
  5. 用颜色 3 涂第 8 个格子和第 9 个格子。
  6. 用颜色 4 涂第 9 个格子和第 10 个格子。注意,第 9 个格子的颜色现在被 4 覆盖了,不再是 3。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.