CF2066F.Curse

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定两个整数数组 a1,a2,…,ana_1, a_2, \ldots, a_n 和 b1,b2,…,bmb_1, b_2, \ldots, b_m。

你需要判断是否可以通过若干次(可能为零)如下操作将数组 aa 转换为数组 bb。

  • 在所有 aa 的非空子数组∗^{\text{∗}}中,选择一个具有最大和的子数组,并将该子数组替换为任意非空整数数组。

如果可能,你需要构造任意可行的操作序列。约束条件:你的答案中,所有操作使用的替换数组的长度之和不得超过 n+mn + m。所有数字的绝对值不得超过 10910^9。

∗^{\text{∗}} 如果数组 aa 可以通过从数组 bb 的开头和结尾删除若干(可能为零或全部)元素得到,则称 aa 是 bb 的子数组。

输入格式

每个测试包含多个测试用例。第一行包含测试用例的数量 tt(1≤t≤2001 \le t \le 200)。接下来是每个测试用例的描述。

每个测试用例的第一行包含两个整数 n,mn, m(1≤n,m≤5001 \le n, m \le 500)——数组 aa 和 bb 的长度。

每个测试用例的第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(−106≤ai≤106-10^6 \le a_i \le 10^6)——数组 aa 的元素。

每个测试用例的第三行包含 mm 个整数 b1,b2,…,bmb_1, b_2, \ldots, b_m(−106≤bi≤106-10^6 \le b_i \le 10^6)——数组 bb 的元素。

保证所有测试用例的 nn 之和不超过 500500。

保证所有测试用例的 mm 之和不超过 500500。

输出格式

对于每个测试用例,如果无法将数组 aa 转换为数组 bb,则输出 −1-1。

否则,在第一行输出操作次数 0≤q≤n+m0 \leq q \leq n + m。接下来按执行顺序输出操作,格式如下:

每个操作的第一行输出三个数字 l,r,kl, r, k(1≤l≤r≤∣a∣1 \leq l \leq r \leq |a|)。第二行输出 kk 个整数 c1…ckc_1 \ldots c_k,表示将子数组 al,…,ara_l, \ldots, a_r 替换为数组 c1,…,ckc_1, \ldots, c_k。

所有操作的 kk 之和不得超过 n+mn + m。此外,必须满足 −109≤ci≤109-10^9 \leq c_i \leq 10^9。

你不需要最小化操作次数。

输入输出样例

  • 输入#1

    3
    4 3
    2 -3 2 0
    -3 -7 0
    2 1
    -2 -2
    2
    5 4
    -5 9 -3 5 -9
    -6 6 -1 -9

    输出#1

    4
    3 4 1
    -3 
    
    1 1 1
    -3 
    
    2 2 1
    -7 
    
    3 3 1
    0
     
    -1
    
    3
    2 4 1
    -5 
    
    1 1 1
    -6 
    
    2 2 2
    6 -1

说明/提示

在第一个测试用例中,初始数组按以下方式修改:

[2,−3,2,0]→[2,−3,−3]→[−3,−3,−3]→[−3,−7,−3]→[−3,−7,0][2, -3, 2, 0] \to [2, -3, -3] \to [-3, -3, -3] \to [-3, -7, -3] \to [-3, -7, 0]

你可以选择输出空行或不输出。示例中的空行仅为方便阅读添加。

翻译由 DeepSeek R1 完成

输入解题思路,AI测评打分。不知道怎么写?

首页