A7461 | 舞台拼色
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
在一场大型文艺汇演中,共有来自不同地区的代表队参与表演。每个代表队的成员穿着统一颜色的服装,用编号表示其颜色。
导演希望通过一系列调度操作,让舞台上的演员最终呈现出一幅理想的颜色排列效果。
共有 $n$ 个代表队,每个代表队有足够多的成员,且第 $i$ 个代表队的服装颜色编号为 $i$。
舞台上有一排位置,共 $m$ 个,从左到右编号为 $1$ 到 $m$。开始时舞台上没有演员。
导演将进行若干次操作,每次操作选择一个**尚未使用过的代表队**,并指定一个区间 $[L, R]$。该代表队的成员会占据舞台上从第 $L$ 到第 $R$ 的所有位置:
- 如果某个位置上已经有演员,则原演员会被替换;
- 新上场的演员全部来自同一个代表队,因此这些位置的颜色会被统一为该代表队的编号。
每个代表队**最多只能被使用一次**。
现在给定导演希望最终舞台上从左到右的颜色序列 $a_1, a_2, \dots, a_m$。
你的任务是:构造一组操作,使得经过这些操作后,舞台上的颜色排列**恰好等于目标序列**。
如果无法实现,输出 $-1$。
导演希望通过一系列调度操作,让舞台上的演员最终呈现出一幅理想的颜色排列效果。
共有 $n$ 个代表队,每个代表队有足够多的成员,且第 $i$ 个代表队的服装颜色编号为 $i$。
舞台上有一排位置,共 $m$ 个,从左到右编号为 $1$ 到 $m$。开始时舞台上没有演员。
导演将进行若干次操作,每次操作选择一个**尚未使用过的代表队**,并指定一个区间 $[L, R]$。该代表队的成员会占据舞台上从第 $L$ 到第 $R$ 的所有位置:
- 如果某个位置上已经有演员,则原演员会被替换;
- 新上场的演员全部来自同一个代表队,因此这些位置的颜色会被统一为该代表队的编号。
每个代表队**最多只能被使用一次**。
现在给定导演希望最终舞台上从左到右的颜色序列 $a_1, a_2, \dots, a_m$。
你的任务是:构造一组操作,使得经过这些操作后,舞台上的颜色排列**恰好等于目标序列**。
如果无法实现,输出 $-1$。
输入格式
- 第一行包含两个整数 $m, n$,表示舞台位置数量和代表队数量。
- 第二行包含 $m$ 个整数 $a_1, a_2, \dots, a_m$($1 \le a_i \le n$),表示目标颜色序列。
- 第二行包含 $m$ 个整数 $a_1, a_2, \dots, a_m$($1 \le a_i \le n$),表示目标颜色序列。
输出格式
- 第一行输出一个整数 $k$。
- 若无解,输出 $-1$;
- 否则,$k$ 表示需要进行的操作次数。
- 若 $k \neq -1$,接下来输出 $k$ 行,每行三个整数 $c_i, L_i, R_i$:
- 表示第 $i$ 次操作选择编号为 $c_i$ 的代表队,
- 并让其成员占据区间 $[L_i, R_i]$。
- 所有 $c_i$ 必须互不相同。
如果存在多种可行方案,输出任意一种即可。
- 若无解,输出 $-1$;
- 否则,$k$ 表示需要进行的操作次数。
- 若 $k \neq -1$,接下来输出 $k$ 行,每行三个整数 $c_i, L_i, R_i$:
- 表示第 $i$ 次操作选择编号为 $c_i$ 的代表队,
- 并让其成员占据区间 $[L_i, R_i]$。
- 所有 $c_i$ 必须互不相同。
如果存在多种可行方案,输出任意一种即可。
输入输出样例
输入 #1
7 10 10 5 5 10 4 2 4
输出 #1
5 4 1 7 7 2 4 10 1 4 5 2 3 2 6 6
输入 #2
5 2 1 2 1 2 1
输出 #2
-1
输入 #3
6 5 1 1 4 5 1 4
输出 #3
-1
以样例 1 为例,按照输出的操作顺序,舞台上的颜色变化如下:
1. 执行 $(4, 1, 7)$:
$4\ 4\ 4\ 4\ 4\ 4\ 4$
2. 执行 $(7, 2, 4)$:
$4\ 7\ 7\ 7\ 4\ 4\ 4$
3. 执行 $(10, 1, 4)$:
$10\ 10\ 10\ 10\ 4\ 4\ 4$
4. 执行 $(5, 2, 3)$:
$10\ 5\ 5\ 10\ 4\ 4\ 4$
5. 执行 $(2, 6, 6)$:
$10\ 5\ 5\ 10\ 4\ 2\ 4$
最终得到目标序列。
## 数据范围
| 子任务编号 | 分值 | $m \le$ | $n \le$ |
|------------|------|---------|---------|
| 1 | 15 | 100 | 100 |
| 2 | 15 | $10^4$ | $10^4$ |
| 3 | 5 | $3 \times 10^5$ | 2 |
| 4 | 5 | $3 \times 10^5$ | 3 |
| 5 | 20 | $3 \times 10^5$ | 10 |
| 6 | 40 | $3 \times 10^5$ | $3 \times 10^5$ |
1. 执行 $(4, 1, 7)$:
$4\ 4\ 4\ 4\ 4\ 4\ 4$
2. 执行 $(7, 2, 4)$:
$4\ 7\ 7\ 7\ 4\ 4\ 4$
3. 执行 $(10, 1, 4)$:
$10\ 10\ 10\ 10\ 4\ 4\ 4$
4. 执行 $(5, 2, 3)$:
$10\ 5\ 5\ 10\ 4\ 4\ 4$
5. 执行 $(2, 6, 6)$:
$10\ 5\ 5\ 10\ 4\ 2\ 4$
最终得到目标序列。
## 数据范围
| 子任务编号 | 分值 | $m \le$ | $n \le$ |
|------------|------|---------|---------|
| 1 | 15 | 100 | 100 |
| 2 | 15 | $10^4$ | $10^4$ |
| 3 | 5 | $3 \times 10^5$ | 2 |
| 4 | 5 | $3 \times 10^5$ | 3 |
| 5 | 20 | $3 \times 10^5$ | 10 |
| 6 | 40 | $3 \times 10^5$ | $3 \times 10^5$ |
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?