P14465 霞む夏の灯(ending)
题目背景
> 夜空に咲く花を摘んで 摘下夜空中盛放的花
>
> 瞬く星を束ねて / 君にあげる 将闪烁繁星合成一束 / 送给你
>
> ねぇ / どうして君は泣いているの 呐 / 你为什么在哭呢
>
> ...
>
> 揺らめく明かりを見ていた / どれも綺麗だけど 摇曳闪烁的烟火光芒 / 纵然每一朵都美丽绝伦
>
> 君の涙は止められないなぁ 却依旧止不住你的眼泪
>
> _—— [霞む夏の灯 - 猫村いろは / *Luna](https://music.163.com/#/song?id=1311346096)_
题目描述
夏天就要结束了。
烟火大会马上就要开始了,烟火大会的负责人小 L 采购了 $n$ 种烟花。现在有一个残缺的演出顺序表 $k_i$。如果 $k_i \ne -1$,则代表第 $i$ 场演出应该表演第 $k_i$ 种烟花。你可以任意排列剩下烟花的演出顺序,但是要求每种烟花都必须演出恰好一次。
定义第 $i$ 种烟花的精彩度为,如果其在第 $j$ 个演出,它的精彩度为 $c_{\min(|i-j|,m)}$。烟花大会的精彩度定义为所有烟花精彩度的乘积。小 L 希望知道,对于所有可能的烟花的排列顺序,烟火大会的精彩度之和。这里定义两个排列 $\pi_1$ 和 $\pi_2$ 不同当且仅当存在 $i$ 使得 $\pi_1(i)\ne \pi_2(i)$。由于这个数会很大,你只需要输出对 $998244353$ 取模的结果即可。
形式化题意:给定 $n,m$ 和长为 $m+1$ 的序列 $c_i$,以及长为 $n$ 的序列 $k_i$,你需要求出 $\displaystyle\sum_{\pi}\prod_{i=1}^n c_{\min(|i-\pi(i)|,m)}\times[k_i=-1 \vee k_i=\pi(i)]$ 对 $998244353$ 取模的值。
输入格式
第一行两个正整数 $n,m$。
第二行 $m+1$ 个正整数,代表 $c_i$。
第三行 $n$ 个正整数,代表 $k_i$。
输出格式
你只需要输出一个数,代表答案。
说明/提示
**本题采用捆绑测试**:
+ Subtask 1(1 pts):$1 \le n \le 10$。
+ Subtask 2(2 pts):$1 \le n \le 16$。
+ Subtask 3(1 pts):$k_i=-1,m=1,c_1=0$。
+ Subtask 4(3 pts):$k_i=-1,m=1,c_0=0$。
+ Subtask 5(5 pts):$k_i=-1,m=1$。
+ Subtask 6(5 pts):$m=1$。
+ Subtask 7(13 pts):$m=2$。
+ Subtask 8(15 pts):$k_i = -1, m \le 5$。
+ Subtask 9(15 pts):$k_i = -1$。
+ Subtask 10(40 pts):无特殊限制。
对于 $100\%$ 的数据,$1 \le n \le 100, 1 \le m \le 6,-1 \le k_i \le n, k_i \ne 0,0 \le c_i < 998244353$。
题目保证对于任意一对 $(i,j)(i \ne j,k_i \ne -1, k_j \ne -1)$,都有 $k_i \ne k_j$。
----------------
待在她身旁,像这样闲聊些无聊的话题,甚至让我感到舒坦。所以我才会想继续和她在一起的。
「以前啊。我还曾想说要成为魔法使的呢。既可爱又帅气。嘛、知道了那是无法成为的后,就只能以自己的方式生活下去了」
悠然地走着时,烟火的光芒映入眼帘。差不多要进入高潮了,射向空中的烟火比刚才增加不少。
「如果是魔法使的话,是不是就能让所有人都展露笑容了呢」