AT_arc160_f.[ARC160F] Count Sorted Arrays

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

给定一个整数 NN 和 MM 个整数对 (a1,b1),(a2,b2),…,(aM,bM)(a_1, b_1), (a_2, b_2), \dots, (a_M, b_M)。每个 ai,bia_i, b_i 满足 1≤ai<bi≤N1 \leq a_i < b_i \leq N。

一开始,你拥有 (1,2,…,N)(1,2,\dots,N) 的所有 N!N! 种排列。
你将进行 MM 次操作。第 ii 次操作如下:

  • 对你拥有的所有 N!N! 个排列,进行如下处理:
    • 比较排列中第 aia_i 个元素和第 bib_i 个元素的值,如果前者更大,则交换两者。

对于 1≤i≤M1 \leq i \leq M,记第 ii 次操作结束后你拥有的排列中,已经按升序排列的序列的个数为 SiS_i。
请输出 S1,S2,…,SMS_1, S_2, \dots, S_M。

不过,输入中给出的并不是 (ai,bi)(a_i, b_i),而是整数对 (xi,yi)(x_i, y_i)。
(ai,bi)(a_i, b_i) 的值需要通过 xi,yi,Si−1x_i, y_i, S_{i-1} 按如下步骤计算得到(其中 S0=1S_0 = 1):

  • ci=((xi+Si−1) mod N)+1c_i = ((x_i + S_{i-1}) \bmod N) + 1。
  • di=((yi+Si−1×2) mod N)+1d_i = ((y_i + S_{i-1} \times 2) \bmod N) + 1。(保证 ci≠dic_i \neq d_i)
  • ai=min⁡(ci,di)a_i = \min(c_i, d_i)。
  • bi=max⁡(ci,di)b_i = \max(c_i, d_i)。

输入格式

输入以如下格式从标准输入读入。

NN MM x1x_1 y1y_1 x2x_2 y2y_2 ⋯\cdots xMx_M yMy_M

输出格式

输出 MM 行。第 ii 行输出 SiS_i。

输入输出样例

  • 输入#1

    2 1
    1 1

    输出#1

    2
  • 输入#2

    3 4
    0 1
    2 1
    1 1
    0 1

    输出#2

    2
    4
    4
    6
  • 输入#3

    5 5
    4 4
    0 4
    1 1
    2 4
    1 2

    输出#3

    2
    4
    4
    8
    16

说明/提示

数据范围

  • 2≤N≤152 \leq N \leq 15
  • 1≤M≤5×1051 \leq M \leq 5 \times 10^5
  • 1≤ai<bi≤N1 \leq a_i < b_i \leq N
  • 0≤xi,yi≤N−10 \leq x_i, y_i \leq N - 1

样例解释 1

一开始拥有的排列为 (1,2)(1, 2) 和 (2,1)(2, 1)。(a1,b1)=(1,2)(a_1, b_1) = (1, 2)。第 11 次操作后拥有的排列为 (1,2)(1, 2) 共 22 个。因此输出 22。

样例解释 2

(ai,bi)(a_i, b_i) 依次为 (1,2),(2,3),(1,3),(1,2)(1, 2), (2, 3), (1, 3), (1, 2)。

样例解释 3

(ai,bi)(a_i, b_i) 依次为 (1,2),(3,4),(1,5),(2,3),(4,5)(1, 2), (3, 4), (1, 5), (2, 3), (4, 5)。

由 ChatGPT 4.1 翻译

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

首页