专栏文章

P8576 「DTOI-2」星之界 题解

P8576题解参与者 3已保存评论 2

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
2 条
当前快照
1 份
快照标识符
@mipnxcth
此快照首次捕获于
2025/12/03 15:05
3 个月前
此快照最后确认于
2025/12/03 15:05
3 个月前
查看原文

题意

给你一个序列 aa,有两种操作:
  • 操作一:将 [l,r][l,r] 内所有 ai=xa_i=xaia_i 改为 yy
  • 操作二:求 i=lrCj=liajai mod998244353\prod\limits_{i = l}^{r} C_{\sum_{j = l}^{i}a_j}^{a_i}\ \bmod 998244353 的值。

思路

发现求的那个式子可以转换成 (i=lrai)!i=lr(ai!) \frac{(\sum\limits_{i=l}^ra_i)!}{\prod\limits_{i=l}^r(a_i!)}
即我们需要维护区间和、区间阶乘之积。
观察到 n105n\le10^5,因此考虑分块。
每一次修改操作暴力重构散块。对于整块 kk,我们可以用并查集维护相同的数,对该块中每一个出现的数,记录第一个出现的位置,将其他相同的数的父亲指向该位置。同时维护块中每一个数的出现次数,查询时将相同的 ai!a_i! 合并,光速幂计算。
时间复杂度 O(nn)O(n\sqrt n),代码比较丑就不贴了。
注意并查集不要递归,否则会 MLE。
做完这道题可以去做一下未来日记,一样的套路。

评论

2 条评论,欢迎与作者交流。

正在加载评论...