AT_arc132_c.[ARC132C] Almost Sorted

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

给定一个由 1,…,n1,\dots,n 和 −1-1 组成的数列 a1,…,ana_1,\dots,a_n,以及一个整数 dd。请问有多少个满足以下条件的数列 p1,…,pnp_1,\dots,p_n?请输出答案对 998244353998244353 取模后的结果。

  • p1,…,pnp_1,\dots,p_n 是 1,…,n1,\dots,n 的一个排列。
  • 对于 i=1,…,ni=1,\dots,n,如果 ai≠−1a_i\neq -1,则 ai=pia_i=p_i(也就是说,可以通过将 a1,…,ana_1,\dots,a_n 中的 −1-1 项适当替换,得到 p1,…,pnp_1,\dots,p_n)。
  • 对于 i=1,…,ni=1,\dots,n,有 ∣pi−i∣≤d|p_i-i|\le d。

输入格式

输入通过标准输入按以下格式给出。

nn dd a1a_1 a2a_2 …\dots ana_n

输出格式

请输出满足条件的数列个数对 998244353998244353 取模后的结果。

输入输出样例

  • 输入#1

    4 2
    3 -1 1 -1

    输出#1

    2
  • 输入#2

    5 1
    2 3 4 5 -1

    输出#2

    0
  • 输入#3

    16 5
    -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

    输出#3

    794673086

说明/提示

限制条件

  • 1≤d≤51 \le d \le 5
  • d<n≤500d < n \le 500
  • 1≤ai≤n1 \le a_i \le n 或 ai=−1a_i = -1
  • 如果 ai≠−1a_i \neq -1,则 ∣ai−i∣≤d|a_i-i| \le d
  • 如果 i≠ji \neq j 且 ai,aj≠−1a_i, a_j \neq -1,则 ai≠aja_i \neq a_j
  • 所有输入均为整数

样例解释 1

(3,2,1,4)(3,2,1,4) 和 (3,4,1,2)(3,4,1,2) 满足条件。

样例解释 2

将 −1-1 替换后能得到的 1,2,3,4,51,2,3,4,5 的排列只有 (2,3,4,5,1)(2,3,4,5,1)。但该排列的第 55 项不满足条件,因此答案为 00。

样例解释 3

请输出答案对 998244353998244353 取模后的结果。

由 ChatGPT 4.1 翻译

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

首页