CF1469D.Ceil Divisions
普及+/提高
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You have an array a1,a2,…,an where ai=i.
In one step, you can choose two indices x and y (x=y) and set ax=⌈ayax⌉ (ceiling function).
Your goal is to make array a consist of n−1 ones and 1 two in no more than n+5 steps. Note that you don't have to minimize the number of steps.
你有一个数组 a1,a2,…,an,其中 ai=i。
每一步中,你可以选择两个下标 x 和 y(x=y),并将 ax 更新为 ⌈ayax⌉(向上取整函数)。
你的目标是在不超过 n+5 步内,使数组 a 包含 n−1 个 1 和 1 个 2。注意:你无需最小化操作步数。
输入格式
The first line contains a single integer t (1≤t≤1000) — the number of test cases.
The first and only line of each test case contains the single integer n (3≤n≤2⋅105) — the length of array a.
It's guaranteed that the sum of n over test cases doesn't exceed 2⋅105.
第一行包含一个整数 t(1≤t≤1000)—— 测试用例的数量。
每个测试用例的第一行且唯一一行包含一个整数 n(3≤n≤2⋅105)—— 数组 a 的长度。
保证所有测试用例的 n 之和不超过 2⋅105。
输出格式
For each test case, print the sequence of operations that will make a as n−1 ones and 1 two in the following format: firstly, print one integer m (m≤n+5) — the number of operations; next print m pairs of integers x and y (1≤x,y≤n; x=y) (x may be greater or less than y) — the indices of the corresponding operation.
It can be proven that for the given constraints it's always possible to find a correct sequence of operations.
对每个测试用例,输出将数组 a 变为包含 n−1 个 1 和 1 个 2 的操作序列,格式如下:首先输出一个整数 m(m≤n+5),表示操作次数;接着输出 m 对整数 x 和 y(1≤x,y≤n;x=y)(x 可大于或小于 y),表示每次操作所涉及的下标。
可以证明,在给定约束条件下,总存在一个合法的操作序列。
输入输出样例
输入#1
2 3 4
输出#1
2 3 2 3 2 3 3 4 4 2 4 2
说明/提示
In the first test case, you have array a=[1,2,3]. For example, you can do the following:
- choose 3, 2: a3=⌈a2a3⌉=2 and array a=[1,2,2];
- choose 3, 2: a3=⌈22⌉=1 and array a=[1,2,1].
You've got array with 2 ones and 1 two in 2 steps.
In the second test case, a=[1,2,3,4]. For example, you can do the following:
- choose 3, 4: a3=⌈43⌉=1 and array a=[1,2,1,4];
- choose 4, 2: a4=⌈24⌉=2 and array a=[1,2,1,2];
- choose 4, 2: a4=⌈22⌉=1 and array a=[1,2,1,1].
在第一个测试用例中,给定数组 a=[1,2,3]。例如,你可以执行以下操作:
- 选择下标 3 和 2:令 a3=⌈a2a3⌉=2,此时数组变为 a=[1,2,2];
- 选择下标 3 和 2:令 a3=⌈22⌉=1,此时数组变为 a=[1,2,1]。
你仅用 2 步就得到了一个包含 2 个 1 和 1 个 2 的数组。
在第二个测试用例中,a=[1,2,3,4]。例如,你可以执行以下操作:
- 选择下标 3 和 4:令 a3=⌈43⌉=1,此时数组变为 a=[1,2,1,4];
- 选择下标 4 和 2:令 a4=⌈24⌉=2,此时数组变为 a=[1,2,1,2];
- 选择下标 4 和 2:令 a4=⌈22⌉=1,此时数组变为 a=[1,2,1,1]。
输入解题思路,AI测评打分。不知道怎么写?