CF2262D PLUSworld

题目描述

Farmer John 正在建造一个巨大的谷仓建筑群 PLUSworld,其中有 $n$ 个谷仓,编号为 $1$ 到 $n$。 对于每个 $1\le i\le n$,目前都有一条单向道路从谷仓 $i$ 通往谷仓 $a_i$。 在开放 PLUSworld 之前,Farmer John 希望重新规划这些道路,使得对于每个 $1\le i\le n$,谷仓 $i$ 的道路最终指向谷仓 $b_i$。 目标道路具有一个特殊性质:每条道路要么指向自己所在的谷仓,要么指向编号更大的谷仓,即满足 $i\le b_i$。 为了完成这个目标,Farmer John 会让 Bessie 从一个她自行选择的谷仓出发。 设 Bessie 当前位于谷仓 $p$,她可以进行以下两种操作任意次: - **操作 1:** 将当前谷仓的道路终点编号增加 $1$。更形式化地,将 $a_p:=a_p+1$。该操作只有在 $a_p

输入格式

输入包含多组测试数据。 第一行包含一个整数 $t$($1\le t\le 10^4$),表示测试用例的数量。 接下来描述每组测试用例。 每组测试用例的第一行包含一个整数 $n$($1\le n\le 1000$),表示谷仓的数量。 第二行包含 $n$ 个整数 $a_1,a_2,\ldots,a_n$,满足 $1\le a_i\le n$。 第三行包含 $n$ 个整数 $b_1,b_2,\ldots,b_n$,满足 $i\le b_i\le n$。 保证所有测试用例的 $n^2$ 之和不超过 $1000^2$。

输出格式

对于每组测试用例: 如果无法通过操作使数组 $a$ 变成数组 $b$,输出一行: ```text -1 ``` 否则输出两行。 第一行输出两个整数 $o$ 和 $p$,其中 $o$ 表示你将执行的操作次数,满足 $0\le o\le 2n^2$;$p$ 表示 Bessie 的初始位置,满足 $1\le p\le n$。 第二行输出 $o$ 个整数 $c_1,c_2,\ldots,c_o$,其中 $1\le c_i\le 2$,表示第 $i$ 次执行的操作类型。 如果 $c_i=1$,执行操作 1,将 $a_p:=a_p+1$。此时必须满足 $a_p

说明/提示

对于第一个测试用例,Bessie 从谷仓 $1$ 出发。 她首先执行操作 1,将 $a_1$ 从 $1$ 增加到 $2$,然后执行操作 2,沿着道路前往谷仓 $2$。 接着,她执行操作 1,将 $a_2$ 从 $2$ 增加到 $3$。 此时数组变为 $[2,3,3]$,恰好等于目标数组 $b$。 对于第二个测试用例,由于 $a_1=2>b_1=1$,而操作 1 只能增加道路终点,不能减小道路终点,因此不可能将 $a_1$ 变成 $b_1$。 所以答案为 $-1$。 对于第三个测试用例,Bessie 从谷仓 $1$ 出发。 她首先将 $a_1$ 从 $1$ 增加到 $2$,然后沿着道路前往谷仓 $2$。 接着将 $a_2$ 从 $1$ 增加到 $3$,然后前往谷仓 $3$。 随后将 $a_3$ 从 $1$ 增加到 $4$,然后前往谷仓 $4$。 最后将 $a_4$ 从 $4$ 增加到 $5$。 最终数组变为 $[2,3,4,5,5]$,恰好等于目标数组 $b$。 由 ChatGPT 翻译。