CF1651B.Prove Him Wrong

入门

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

Recently, your friend discovered one special operation on an integer array aa:

  1. Choose two indices ii and jj (i≠ji \neq j);
  2. Set ai=aj=∣ai−aj∣a_i = a_j = |a_i - a_j|.

After playing with this operation for a while, he came to the next conclusion:

  • For every array aa of nn integers, where 1≤ai≤1091 \le a_i \le 10^9, you can find a pair of indices (i,j)(i, j) such that the total sum of aa will decrease after performing the operation.

This statement sounds fishy to you, so you want to find a counterexample for a given integer nn. Can you find such counterexample and prove him wrong?

In other words, find an array aa consisting of nn integers a1,a2,…,ana_1, a_2, \dots, a_n (1≤ai≤1091 \le a_i \le 10^9) such that for all pairs of indices (i,j)(i, j) performing the operation won't decrease the total sum (it will increase or not change the sum).

最近,你的朋友发现了一个针对整数数组 aa 的特殊操作:

  1. 选择两个下标 ii 和 jj(其中 i≠ji \neq j);
  2. 将 aia_i 和 aja_j 同时赋值为 ∣ai−aj∣|a_i - a_j|。

在尝试该操作一段时间后,他得出了如下结论:

  • 对于任意长度为 nn 的整数数组 aa(其中每个元素满足 1≤ai≤1091 \le a_i \le 10^9),总存在一对下标 (i,j)(i, j),使得执行该操作后数组的总和严格减小。

你认为这一说法可疑,因此希望为给定的整数 nn 构造一个反例,从而证明他是错误的。

换言之,请构造一个由 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n 组成的数组 aa(满足 1≤ai≤1091 \le a_i \le 10^9),使得对所有下标对 (i,j)(i, j) 执行该操作后,数组的总和不会减小(即总和增大或保持不变)。

输入格式

The first line contains a single integer tt (1≤t≤1001 \le t \le 100) — the number of test cases. Then tt test cases follow.

The first and only line of each test case contains a single integer nn (2≤n≤10002 \le n \le 1000) — the length of array aa.

第一行包含一个整数 tt(1≤t≤1001 \le t \le 100),表示测试用例的数量。随后是 tt 个测试用例。

每个测试用例仅有一行,包含一个整数 nn(2≤n≤10002 \le n \le 1000),表示数组 aa 的长度。

输出格式

For each test case, if there is no counterexample array aa of size nn, print NO.

Otherwise, print YES followed by the array aa itself (1≤ai≤1091 \le a_i \le 10^9). If there are multiple counterexamples, print any.

对于每个测试用例,若不存在大小为 nn 的反例数组 aa,则输出 NO。

否则,输出 YES,后跟数组 aa 本身(满足 1≤ai≤1091 \le a_i \le 10^9)。若存在多个反例,输出任意一个即可。

输入输出样例

  • 输入#1

    3
    2
    512
    3

    输出#1

    YES
    1 337
    NO
    YES
    31 4 159

说明/提示

In the first test case, the only possible pairs of indices are (1,2)(1, 2) and (2,1)(2, 1).

If you perform the operation on indices (1,2)(1, 2) (or (2,1)(2, 1)), you'll get a1=a2=∣1−337∣=336a_1 = a_2 = |1 - 337| = 336, or array [336,336][336, 336]. In both cases, the total sum increases, so this array aa is a counterexample.

在第一个测试用例中,唯一可能的下标对是 (1,2)(1, 2) 和 (2,1)(2, 1)。

若对下标 (1,2)(1, 2)(或 (2,1)(2, 1))执行该操作,则得到 a1=a2=∣1−337∣=336a_1 = a_2 = |1 - 337| = 336,即数组 [336,336][336, 336]。在这两种情况下,总和均增大,因此该数组 aa 是一个反例。

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

首页