区间加等比数列


给出一个长度为 n 的数列
接下来进行 m 次操作
1 l r k a
i = l ~ r A[i] += k * a ^ (i - l)
2 l r k a
i = l ~ r sum A[i] * k * a ^ (i - l)
最后输出一遍整个序列

输出对 998244353 取模
n,m <= 1e5, 5s

操作分块+序列分块
首先假设每 B 次操作整个重构一遍 块内修改对询问贡献的复杂度即为 mB
考虑如何重构.
首先散块暴力,设分块块长为 B2,这部分复杂度即为 mB2
整块
考虑修改
整块序列的贡献形式是很多小分式求和,可以用分治ntt+多项式求逆解决
b=max(B,B2)  复杂度即为 O(blog2b)
考虑查询
一个块对多个询问的影响可写成多点求值的形式 O(blog2b)
散块部分可暴力 mB2
总复杂度即 m(B+B2)+mB2+nblog2bB2
n,m 同阶 取 B=B2=nlogn.
总体就是 O(nnlogn).

细节较多,不是很能跑过暴力.

posted @   QedDust  阅读(84)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示