AT_jsc2025_final_c.Prefix Bounding Box, Mod, Minimize

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

给定正整数 N,MN, M 和素数 PP,以及 Y=(Y1,Y2,…,YN)Y = (Y_1, Y_2, \dots, Y_N),它是 11 到 NN 的一个全排列。

对于 11 到 NN 的一个全排列 X=(X1,X2,…,XN)X = (X_1, X_2, \dots, X_N),定义函数 f(X)f(X) 如下:

  • 对于所有 2≤k≤N2 \leq k \leq N 的整数,定义 BkB_k 为以下值:
    • 对于集合 S={(X1,Y1),(X2,Y2),…,(Xk,Yk)}S=\{(X_1,Y_1),(X_2,Y_2),\dots,(X_k,Y_k)\},在二维平面上画出这些点,取覆盖 SS 的、边与 xx 轴平行的最小面积的矩形,即集合 SS 的最小“包围盒”,记这个矩形面积模 MM 的余数为 BkB_k。
  • f(X)=max⁡(B2,B3,…,BN)f(X) = \max(B_2, B_3, \dots, B_N)

请你计算满足 f(X)f(X) 最小的 XX 的个数,并对 PP 取模。

现在有 TT 组测试数据,请分别作答。

“包围盒”是指:对于给定点集 SS,找一个边与坐标轴平行的最小矩形,恰好包含 SS 的所有点,且面积最小。

输入格式

输入通过标准输入给出,格式如下:

TT
每组测试包含:NN MM PP
Y1Y_1 Y2Y_2 … YNY_N

输出格式

输出 TT 行。

第 ii 行输出第 ii 个测试用例,f(X)f(X) 取得最小值的 XX 的个数,对 PP 取余。

输入输出样例

  • 输入#1

    4
    4 6 998244353
    2 3 4 1
    13 1 10007
    1 10 6 5 13 12 8 11 9 2 7 3 4
    2 10000000 999999937
    1 2
    24 101 20250101
    13 18 12 8 16 11 2 10 9 4 6 23 22 14 3 17 7 19 1 21 5 15 24 20

    输出#1

    12
    4938
    2
    888752

说明/提示

样例解释 1

对于第 11 组测试,例如 X=(3,1,4,2)X = (3,1,4,2) 时,(B2,B3,B4)=(2,0,3)(B_2, B_3, B_4) = (2, 0, 3),因此 f(X)=3f(X) = 3。f(X)f(X) 的最小值是 33,满足 f(X)=3f(X) = 3 的 XX 有 1212 个。

对于第 22 组测试,对于所有 XX,都有 f(X)=0f(X) = 0,因此答案为 13!13! 对 P=10007P=10007 取余。

数据范围

  • 1≤T≤1001 \leq T \leq 100
  • 2≤N≤30002 \leq N \leq 3000
  • 1≤M≤1071 \leq M \leq 10^7
  • 104≤P≤10910^4 \leq P \leq 10^9
  • PP 是素数
  • YY 是 11 到 NN 的全排列
  • 所有测试用例中 NN 的总和不超过 30003000
  • 输入均为整数

由 ChatGPT 5 翻译

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

首页