bdfz_2024_summer/day4/T435167/T435167.md
2024-08-06 08:31:25 +08:00

72 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 01 Sort
## 题目描述
给定两个长度为 $n$ 的序列 $a[1...n]$ 和 $b[1...n]$,其中每个 $a[i]$ 都对应一个属性 $b[i]$,并且 $b[i]$ 的取值只能为 $0$ 或者 $1$。
定义一次操作的规则如下:
- 选择满足 $b[i]\neq b[j]$ 的两个数 $i$ 和 $j \ (1\le i,j\le n, i\neq j)$,分别交换对应的 $a[i],a[j]$ 和 $b[i], b[j]$
你最多可以执行 $x\in [0, 10^5]$ 次操作,请你判断能否在规定次数内,使得序列 $a[1...n]$ 排序成非降顺序吗?如果可以,请你输出一种可能的操作方案;如果不可以,则输出 $-1$。
## 输入格式
第一行包含一个整数 $t$,代表 $t$ 组数据
每组数据的第一行保包含 $1$ 个整数 $n$,表示序列长度
每组数据的第二行 $n$ 个整数 $a[1...n]$
每组数据的第三行 $n$ 个整数 $b[1...n]$,表示每个 $a[i]$ 对应的属性 $0$ 或 $1$
## 输出格式
请你分别输出 $t$ 组数据的答案。
对于每组数据,第一行输出一个整数 $x \ (x\in [0, 10^5])$ 代表操作次数,若无解则输出 $-1$。接下来的 $x$ 行,每行两个整数 $i$ 和 $j$,代表一次操作。
如果有多个答案,则打印其中任何一个。你不必尽量减少移动的次数。
## 样例 #1
### 样例输入 #1
```
5
4
10 20 20 30
0 1 0 1
3
3 1 2
0 1 1
4
2 2 4 8
1 1 1 1
3
5 15 4
0 0 0
4
20 10 100 50
1 0 0 1
```
### 样例输出 #1
```
0
2
1 2
2 3
0
-1
2
1 2
3 4
```
## 提示
对于 $20\%$ 数据,$1\le t\le 10$$1\le n\le 100$$1\le a[i]\le 100$,所有 $b[i]=0$
对于 $100\%$ 数据,$1\le t\le 100$$1\le n\le 10^3$$1\le a[i]\le 10^5$$b[i]\in \{0,1\}$