A85955.「NOI2020」制作菜品

NOI/NOI+/CTSC

通过率:0%

时间限制:2.00s

内存限制:512MB

题目描述

厨师准备给小朋友们制作 mm 道菜,每道菜均使用 kk 克原材料。为此,厨师购入了 nn 种原材料,原材料从 11 到 nn 编号,第 ii 种原材料的质量为 did_i 克。nn 种原材料的质量之和恰好为 m×km\times k 克,其中 did_i 与 kk 都是正整数。

制作菜品时,一种原材料可以被用于多道菜,但为了让菜品的味道更纯粹,厨师打算每道菜至多使用 22 种原材料。现在请你判断是否存在一种满足要求的制作方案。更具体地,方案应满足下列要求:

  • 共做出 mm 道菜。

  • 每道菜至多使用 22 种原材料。

  • 每道菜恰好使用 kk 克原材料。

  • 每道菜使用的每种原材料的质量都为正整数克。

  • nn 种原材料都被恰好用完。

若存在满足要求的制作方案,你还应该给出一种具体的制作方案。

输入格式

从文件 dish.in 中读入数据。

本题单个测试点包含多组测试数据。

第一行一个整数 TT 表示数据组数。对于每组数据:

  • 第一行三个正整数 n,m,kn, m, k 分别表示原材料种数、需要制作的菜品道数、每道菜品需使用的原材料的质量。

  • 第二行 nn 个整数,第 ii 个整数表示第 ii 种原材料的质量 did_i。

输出格式

输出到文件 dish.out 中。

对于每组测试数据:

  • 若不存在满足要求的制作方案,则输出一行一个整数 −1-1;

  • 否则你需要输出 mm 行,每行表示一道菜品的制作方案,根据使用的原材料种数,格式为下列两种之一:

    • 依次输出一行两个整数 ii 和 xx,表示该道菜使用 xx 克第 ii 种原材料制作。你应保证 1≤i≤n,x=k1\le i\le n, x = k。

    • 依次输出一行四个整数 ii、xx、jj 和 yy,表示该道菜使用 xx 克第 ii 种原材料与 yy 克第 jj 种原材料制作。你应保证 1≤i,j≤n1\le i, j\le n,i≠ji \neq j,x+y=kx + y = k,x,y>0x, y > 0。

本题使用自定义校验器检验你的答案是否正确,因此若有多种满足条件的方案,你只需要输出任意一种。

你应保证方案输出的格式正确,且同一行中相邻的两个数使用单个空格分隔,除此之外你的输出中不应包含其他多余字符。

输入输出样例

  • 输入#1

    4
    1 1 10
    10
    4 3 100
    80 30 90 100
    5 3 1000
    200 400 500 900 1000
    6 4 100
    25 30 50 80 95 120

    输出#1

    1 10
    1 80 2 20
    2 10 3 90
    4 100
    -1
    1 5 5 95
    1 20 4 80
    2 30 6 70
    3 50 6 50

说明/提示

对于所有测试点:

1≤T≤101\le T\le 10,1≤n≤5001\le n\le 500,n−2≤m≤5000n - 2\le m\le 5000,m≥1m\ge 1,
1≤k≤50001\le k\le 5000,∑i=1ndi=m×k\sum_{i=1}^n d_i=m\times k。

每个测试点的具体限制见下表:

测试点编号 nn mm kk
1∼31\sim 3 ≤4\le 4 ≤4\le 4 ≤50\le 50
4∼54\sim 5 ≤10\le 10 ≤10\le 10 ≤5000\le 5000
6∼76\sim 7 ≤500\le 500 =n−1= n-1 ≤5000\le 5000
8∼98\sim 9 ≤500\le 500 n−1≤m≤5000n-1\le m\le 5000 ≤5000\le 5000
1010 ≤25\le 25 ≤5000\le 5000 ≤5000\le 5000
11∼1211\sim 12 ≤25\le 25 ≤5000\le 5000 ≤500\le 500
13∼1413\sim 14 ≤50\le 50 ≤5000\le 5000 ≤500\le 500
15∼1715\sim 17 ≤100\le 100 ≤5000\le 5000 ≤5000\le 5000
18∼2018\sim 20 ≤500\le 500 ≤5000\le 5000 ≤5000\le 5000

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

首页