AtCoder Beginner Contest 431

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

[ABC431F] Almost Sorted 2

给一个数组 \(A\) 和一个正整数 \(D(1 \le D \le 10^6)\),求有多少种重排数组 \(A\) 能得到的数组 \(B\)(显然多种完全相同的数组 \(B\) 只算一种),满足:

  • \(\forall 1 \le i \le n-1,B_i-D \le B_{i+1}\)

答案对 \(998244353\) 取模。

\(2 \le n \le 2 \cdot 10^5\)\(1 \le D,a_i \le 10^6\)

有关排列的计数,CSP-S 2025 T4 这种因为限制条件是前缀相关所以从左往右扫,而这题只有左右两边的限制,考虑枚举值域。

从小到大枚举 \(v\)(每次把 \(v\) 插进去),\(v\) 只能插在大于 \(v-D\) 的元素的前面,然后就做完了。

总之有关排列的计数,要么从左往右扫,要么枚举值域。

posted @ 2025-11-09 23:38  hhhqx  阅读(2)  评论(0)    收藏  举报