P7501 「HMOI R1」50 块好兄弟
题目背景
Polaris_Dane 非常菜,他不仅沉迷于计数,而且喜欢玩星际争霸 2。
题目描述
「我的好兄弟无穷无尽,而你的虫子每时每刻都在消亡」
作为新上任爱民如子的指挥官,Polaris_Dane 充分领悟了雷诺指挥官的智慧,决定将此战术贯彻到底。
有 $N$ 个兵营,依次编号为 $1,2,3\cdots N$。现在需要把它们排列在一条数轴中位于 $[1,M]$ 间的整点处。每一个兵营都有一个生产范围 $r_i$,若兵营放在点 $x\ (1 \le x \le M)$ 处,那么它会在区间 $[x - r_i + 1, x + r_i - 1]$ 生产好兄弟。
当 $\rm type = 0$ 时,生产好兄弟的范围必须被区间 $[1,M]$ 完全包含;当 $\rm type = 1$ 时,生产好兄弟的范围可以落在 $[1,M]$ 之外,但是兵营必须放在 $[1,M]$ 内。
Polaris_Dane 不能让好兄弟们太挤了,所以任何两个兵营的生产范围 **都不能相交**,他想知道有多少种方案满足该条件。
若两个方案中存在一个编号为 $i$ 的兵营,其在两个方案中的放置位置不同,则称这两个方案不同。
由于答案可能很大,所以 Polaris_Dane 想请你输出答案对 $998244353$ 取模后的结果。
输入格式
第一行三个整数 $N, M, \mathrm{type}$,其中 $\rm type \in \{0, 1\}$。
第二行 $N$ 个整数 $r_1, r_2, r_3, \ldots, r_n$。
输出格式
仅一行一个整数,为所求的答案对 $998244353$ 取模后的结果。
说明/提示
样例解释:
在样例 1 中,无论如何摆放兵营,生产范围都不会交叉,所以答案即为 $A_4^4 = 24$。
在样例 2 中,虽然生产范围可以出界,但是兵营的可选位置还是只有 $4$ 种,答案仍是 $A_4^4 = 24$。
--------
对于所有数据:
- $1 \le N, M \le 10^6$;
- $1 \le r_i \le 1000$。
-----------
**本题采用捆绑测试。**
| No. | Constraints | $\rm type$ | Score |
| ----------- | ------------------------------------- | ---------- | ----- |
| $1$ | $N = 2;\ M \le 1000;\ r_i = 1$ | $0$ | $10$ |
| $2$ | $N = 2;\ M \le 10^6;\ r_i = 1$ | $0$ | $10$ |
| $3$ | $N \le 40;\ M \le 10^6;\ r_i = 1$ | $0$ | $10$ |
| $4$ | No further constraints | $0$ | $30$ |
| $5$ | $N, r_i \le 40$ | $1$ | $20$ |
| $6$ | No further constraints | $1$ | $20$ |
------
- Idea: Polaris_Dane
- Solution: Polaris_Dane
- Code: Polaris_Dane
- Data: Polaris_Dane