CF1988F.Heartbeat

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

对于一个数组 u1,u2,…,unu_1, u_2, \ldots, u_n,定义如下:

  • 前缀最大值:如果下标 ii 满足 ui>uju_i > u_j 对于所有 j<ij < i,则称 ii 是一个前缀最大值;
  • 后缀最大值:如果下标 ii 满足 ui>uju_i > u_j 对于所有 j>ij > i,则称 ii 是一个后缀最大值;
  • 上升点:如果下标 ii(i>1i > 1)满足 ui>ui−1u_i > u_{i-1},则称 ii 是一个上升点。

你会得到三个代价数组:[a1,a2,…,an][a_1, a_2, \ldots, a_n],[b1,b2,…,bn][b_1, b_2, \ldots, b_n],以及 [c0,c1,…,cn−1][c_0, c_1, \ldots, c_{n-1}]。

定义一个数组的代价为 ax⋅by⋅cza_x \cdot b_y \cdot c_z,其中 xx 是前缀最大值的个数,yy 是后缀最大值的个数,zz 是上升点的个数。

设 f(n)f(n) 为 1,2,…,n1,2,\ldots,n 的所有排列的代价之和。请你求出 f(1),f(2),…,f(n)f(1), f(2), \ldots, f(n),并对 998 244 353998\,244\,353 取模。

输入格式

第一行包含一个整数 nn(1≤n≤7001 \le n \le 700)。

第二行包含 nn 个整数 a1,…,ana_1, \ldots, a_n(0≤ai<998 244 3530 \le a_i < 998\,244\,353)。

第三行包含 nn 个整数 b1,…,bnb_1, \ldots, b_n(0≤bi<998 244 3530 \le b_i < 998\,244\,353)。

第四行包含 nn 个整数 c0,…,cn−1c_0, \ldots, c_{n-1}(0≤ci<998 244 3530 \le c_i < 998\,244\,353)。

输出格式

输出 nn 个整数,第 ii 个数表示 f(i)f(i) 对 998 244 353998\,244\,353 取模的结果。

输入输出样例

  • 输入#1

    3
    1 1 1
    1 1 1
    1 1 1

    输出#1

    1 2 6
  • 输入#2

    3
    1 2 3
    2 3 1
    3 1 2

    输出#2

    6 13 34
  • 输入#3

    5
    1 4 2 5 3
    2 5 1 3 4
    300000000 100000000 500000000 400000000 200000000

    输出#3

    600000000 303511294 612289529 324650937 947905622

说明/提示

在第二个样例中:

  • 考虑排列 [1,2,3][1,2,3]。下标 1,2,31,2,3 都是前缀最大值。下标 33 是唯一的后缀最大值。下标 2,32,3 是上升点。因此,该排列的代价为 a3b1c2=12a_3 b_1 c_2 = 12。
  • 排列 [1,3,2][1,3,2] 有 22 个前缀最大值,22 个后缀最大值,11 个上升点。其代价为 66。
  • 排列 [2,1,3][2,1,3] 有 22 个前缀最大值,11 个后缀最大值,11 个上升点。其代价为 44。
  • 排列 [2,3,1][2,3,1] 有 22 个前缀最大值,22 个后缀最大值,11 个上升点。其代价为 66。
  • 排列 [3,1,2][3,1,2] 有 11 个前缀最大值,22 个后缀最大值,11 个上升点。其代价为 33。
  • 排列 [3,2,1][3,2,1] 有 11 个前缀最大值,33 个后缀最大值,00 个上升点。其代价为 33。

所有排列的代价之和为 3434,因此 f(3)=34f(3) = 34。

由 ChatGPT 4.1 翻译

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

首页