#P12417. 基础构造练习题 1
基础构造练习题 1
题目背景
2025.5.6:加强操作次数限制,并调整了部分分设计。
2025.5.8:再次加强操作次数限制,并调整了部分分设计。之前的提交记录已经全部重测。
题目描述
有一列实数,对于每一次操作,可以选择两个实数,把它们同时变为两数之积。
例如,给定 ,对 和 进行一次操作,原数列变为 。
给定数列的长度 ,你的目标是找到一种操作方案,使得对于任意长度为 的实数列,按照该操作方式操作之后,数列的每一项数值都相同。
输入格式
本题有多组测试数据。
第一行输入数据组数 。
对于每组数据有一行,包含一个正整数 ,表示数列长度。
输出格式
对于每组数据,先输出一个整数表示能否找到。若能输出 ,否则输出 。
若能找到,还需要输出一行 表示操作次数(你需要保证 ),接下来 行,每行包含两个整数,表示操作的两项在数列中的编号。
3
2
3
4
1
1
1 2
0
1
4
1 2
3 4
1 3
2 4
提示
Idea:Milmon,Solution:Milmon & _fewq,Code:Milmon & _fewq,Data:Milmon,Check:Konata28。
对于所有测试数据,保证 ,。本题共包含 个子任务:
子任务编号 | 分值 | 测试点数目 |
---|---|---|
对于子任务 1,选手只需要正确回答是否存在操作方案即可获得满分。
对于子任务 2,对于每组测试数据分别计分:对于一组测试数据,只要选手正确回答是否存在操作方案,并且给出的操作方案均合法,就可以得到该测试点 的分数。选手在该测试点得到的分数等于每组测试数据得分的总和。
对于子任务 3:
-
若存在一组测试数据,选手没有正确回答是否存在操作方案,或者给出的操作方案不合法,那么选手在该测试点不得分;
-
否则,若对于所有存在操作方案的测试数据,选手都给出了操作次数不超过 的方案,那么选手在该测试点得到全部分数;
-
否则,设所有存在操作方案的测试数据中选手给出的最大操作次数为 ,定义函数:
则选手在该测试点的得分为:
$$\frac{f(s) - f(500\,000)}{f(2\,047) - f(500\,000)} \times 55 $$下表为在一些特殊的 中选手在该测试点得到的分数:
选手得分
提示:若能够完成正确性判断,但是无法完成构造的,也需要按照输出格式输出,例如你可以输出一个 的构造。类似地,输出时请判定 是否成立,若评分时存在一组数据的 ,则你无法得到任何分数。