Codeforces 718C

本文探讨了线段树维护及懒惰标记的应用,并针对区间更新查询问题提出解决方案。同时,介绍了如何利用矩阵快速幂优化计算过程,解决具体算法问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 区间更新&&区间查询 考虑线段树维护 + lazy标记

2. 如果一个区间仅仅维护Sum, l, r的话,是没有办法在更新的时候知道,到底sum要加多少的

3. 考虑到 ai   xi 的上限都是1e9的话 求Fibonacci数 肯定是矩阵快速幂的

同理一个节点 可以维护 Pre 和 Sum 每次更新  乘【0111】^ x 这样一个矩阵 算出新的 Pre 和 Sum 即可

4. TLE9 矩阵开的过大, 光初始化就TLE了

5. TLE16 此时我的lazy标记是一个整型记录的是这段区间内每个数加了多少。

此时我向下更新需要求logn次那个矩阵 复杂度是 nlogn log1e9

显然这人矩阵是可以只求一次的,但更新的时候不仅仅只涉及到这个矩阵,还有lazy的其他矩阵 而且很有可能各不相同,map<ll, Matrix> 优化一下

6. TLE17 显然map的常数还是太大了

将lazy的标记改为一个矩阵,downdate的时候 两个子节点的lazy标记可以直接乘上父节点的,这样的就优化到了常数时间,去掉了那个map



//map<ll, Matrix> 在map.count(1)的时候报错 最后给Matrix加了一个空默认构造函数就行了 不懂为什么

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值