CF2035C.Alya and Permutation

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

Alya 遇到了一个难题。不幸的是,她正忙于竞选学生会。请你帮她解决这个问题。

给定一个整数 nn,请构造一个 1,2,…,n1, 2, \ldots, n 的排列 pp,使得在以下过程中最终得到的 kk 的值最大(初始时 k=0k=0)。

进行 nn 次操作,在第 ii 次操作(i=1,2,…,ni=1,2,\ldots,n)中:

  • 如果 ii 是奇数,则 k=k & pik = k\,\&\,p_i,其中 &\& 表示按位与运算。
  • 如果 ii 是偶数,则 k=k ∣ pik = k\,|\,p_i,其中 ∣| 表示按位或运算。

输入格式

第一行包含一个整数 tt(1≤t≤5001\le t\le 500),表示测试用例的数量。

每个测试用例仅一行,包含一个整数 nn(5≤n≤2×1055\le n\le 2 \times 10^5),表示排列的长度。

保证所有测试用例中 nn 的总和不超过 2×1052 \times 10^5。

输出格式

对于每个测试用例,第一行输出最终 kk 的最大值,第二行输出排列 p1,p2,…,pnp_1, p_2, \ldots, p_n。

如果有多种排列方案,输出任意一种均可。

输入输出样例

  • 输入#1

    6
    5
    6
    7
    8
    9
    10

    输出#1

    5
    2 1 3 4 5 
    7
    1 2 4 6 5 3 
    7
    2 4 5 1 3 6 7 
    15
    2 4 5 1 3 6 7 8 
    9
    2 4 5 6 7 1 3 8 9 
    15
    1 2 3 4 5 6 8 10 9 7

说明/提示

对于第一个测试用例,kk 的变化如下:

初始 k=0k=0。

  • 第 11 次操作,11 是奇数,所以 k=k&p1=0&2=0k = k\&p_1 = 0\&2 = 0。
  • 第 22 次操作,22 是偶数,所以 k=k∣p2=0∣1=1k = k|p_2 = 0|1 = 1。
  • 第 33 次操作,33 是奇数,所以 k=k&p3=1&3=1k = k\&p_3 = 1\&3 = 1。
  • 第 44 次操作,44 是偶数,所以 k=k∣p4=1∣4=5k = k|p_4 = 1|4 = 5。
  • 第 55 次操作,55 是奇数,所以 k=k&p5=5&5=5k = k\&p_5 = 5\&5 = 5。

最终 k=5k=5。可以证明,对于所有长度为 55 的排列,kk 的最大值为 55。另一个合法输出为 [2,3,1,4,5][2, 3, 1, 4, 5]。

对于第二个测试用例,最终 k=7k=7。可以证明,对于所有长度为 66 的排列,kk 的最大值为 77。其他合法输出包括 [2,4,1,6,3,5][2, 4, 1, 6, 3, 5] 和 [5,2,6,1,3,4][5, 2, 6, 1, 3, 4]。

由 ChatGPT 4.1 翻译

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

首页