专栏文章

题解:P11918 [PA 2025] 考试 / Egzamin

P11918题解参与者 1已保存评论 0

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@mipspduv
此快照首次捕获于
2025/12/03 17:19
3 个月前
此快照最后确认于
2025/12/03 17:19
3 个月前
查看原文
首先对 pp 从大到小排序,一定取一段前缀做。暴力 DP fi,jf_{i,j} 表示前 ii 个做对了 jj 个。可以证明有值的项不会特别多(???),大概是 O(nlogϵ1)\mathcal O(\sqrt{n\log{\epsilon^{-1}}}) 级别的,所以暴力就过了。
模拟赛场上写了一个非常不牛的分块 FFT,但是 luogu 上似乎被卡精度了。首先每个位置可以看成一个 (pi+(1pi)x)(p_i+(1-p_i)x) 的多项式。序列分块,处理出 FiF_i 表示前 ii 个块多项式的乘积,块内用上面的暴力 DP。两部分拼起来的时候前缀和优化一下即可做到 O(nnlogn)\mathcal O(n\sqrt{n\log n})
还有一个很牛的分治。设 solve(l,r,F) 表示要处理区间 [l,r][l,r],然后 [1,l1][1,l-1] 的所有多项式乘起来是 FF
对于 [xi]F[x^i]F,如果 i(rl+1)>ki-(r-l+1)>k,那这个 fif_i 在区间里一定有贡献,直接加到区间里面就行了。如果 i+(rl+1)<ki+(r-l+1)<k,那这个 fif_i 在区间里一定没有贡献,所以需要考虑的项只有 [k(rl+1),k+(rl+1)][k-(r-l+1),k+(r-l+1)] 里面的,所以 solve 需要保留的多项式长度就是 O(rl+1)\mathcal O(r-l+1) 级别的。这样 FFT 一下就可以做到 O(nlog2n)\mathcal O(n\log^2 n) 求出每一项的答案了。

评论

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

正在加载评论...