CFCF2203F.Binary Search with One Swap

省选/NOI-

通过率:0%

AC君温馨提醒

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

题目描述

考虑以下在一个长度为 nn 的数组 aa 中查找整数 xx 的算法,数组元素从 11nn 编号:

  1. 初始化 l=1l = 1r=nr = n
  2. 如果 l>rl > r,结束算法并报告未找到目标元素;
  3. 计算 m=l+r2m = \lfloor \frac{l + r}{2} \rfloor
  4. 如果 am=xa_m = x,结束算法并报告找到目标元素;
  5. 如果 am<xa_m < x,令 l=m+1l = m + 1,否则令 r=m1r = m - 1
  6. 转到步骤 22

可以证明,如果数组 aa 是非递减有序的,那么该算法一定能成功找到 aa 中的任意元素。

你的任务如下:对于给定的 nn,考虑所有满足 1i<jn1 \le i < j \le n 的数对 (i,j)(i, j)。对于每个这样的数对,你需要计算它的优美度——即如果我们取数组 a=[1,2,3,,n]a = [1, 2, 3, \dots, n] 并交换元素 aia_iaja_j,那么上述算法能够成功找到的整数 xx(从 11nn)的数量。然后,对于每个 kk00nn,你需要输出 pkp_k——优美度为 kk 的数对数量。

输入格式

输入仅有一行,包含一个整数 nn3n51063 \le n \le 5 \cdot 10^6)。

输出格式

输出 n+1n+1 个整数 p0,p1,,pnp_0, p_1, \dots, p_n,其中 pkp_k 是优美度为 kk 的数对 (i,j)(i, j) 的数量。

输入输出样例

  • 输入#1

    4

    输出#1

    0 0 3 3 0

说明/提示

考虑 n=4n = 4 的示例:

  • 如果交换 a1a_1a2a_2,那么 113344 可以被成功找到;
  • 如果交换 a1a_1a3a_3,那么 2244 可以被成功找到;
  • 如果交换 a2a_2a3a_3,那么 113344 可以被成功找到;
  • 如果交换 a1a_1a4a_4,那么 2233 可以被成功找到;
  • 如果交换 a2a_2a4a_4,那么 1144 可以被成功找到;
  • 如果交换 a3a_3a4a_4,那么 112244 可以被成功找到。
首页