专栏文章
8.14总结
个人记录参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miobx1cv
- 此快照首次捕获于
- 2025/12/02 16:41 3 个月前
- 此快照最后确认于
- 2025/12/02 16:41 3 个月前
线段树的数组要开4倍!!!!!!!!!!!
T1
题目大意:
若干次询问,每次询问给定一个区间,计算所有不是区间里所有数的gcd个数。
原思路:
直接打暴力。
正解:
维护两个数组,一个是gcd,另一个是这个gcd在区间里的个数。
注意:在建树时,两个gcd可能不相等,所以c不能直接更新,若当前区间的gcd和左区间的gcd相等,就把左区间的个数加到当前节点的个数里,若与右区间的gcd相等,就累加右区间的个数。
注意:在建树时,两个gcd可能不相等,所以c不能直接更新,若当前区间的gcd和左区间的gcd相等,就把左区间的个数加到当前节点的个数里,若与右区间的gcd相等,就累加右区间的个数。
T2
题目大意:
工厂每天能生产b枚顶针,正常为a枚,计划选连续 k 天维修,期间停产,修复后恢复a。
有若干次操作,每种操作分两种:
1.第个数增加。
2.询问从开始的k长区间,前面的。
有若干次操作,每种操作分两种:
1.第个数增加。
2.询问从开始的k长区间,前面的。
原思路:
直接打暴力。
正解:
维护三个数组,一个是单天的订单数,一个是如果正常的能做的订单数,一个是如果机器坏掉能做的订单数。
注意:因为一个区间有两种情况,所以可以在add里加一个标记代表机器有没有维修好,也可以写两个修改函数。
注意:因为一个区间有两种情况,所以可以在add里加一个标记代表机器有没有维修好,也可以写两个修改函数。
T3
题目大意:
有若干次操作,每种操作分两种:
1.把b数组从y开始的连续k个数改为a数组从x开始的连续k个数。
2.询问。
1.把b数组从y开始的连续k个数改为a数组从x开始的连续k个数。
2.询问。
原思路:
直接打暴力。
正解:
只需维护一个懒标记数组,记录更改的开头。
注意:懒标记记录的数需要更改,可以在往左区间和右区间递归时
注意:懒标记记录的数需要更改,可以在往左区间和右区间递归时
T4
题目大意:
有若干次操作,每种操作分三种:
1.询问区间总和。
2.将区间内所有数%m。
3.将改为x。
1.询问区间总和。
2.将区间内所有数%m。
3.将改为x。
原思路:
原本写了个线段树,知道要遍历到单节点,但不知道怎么优化。
正解:
很像花神那道题,一个区间不能整体操作,所以必须递归到子节点,可以发现,当一个数小于模数的时侯,就还是那个数,那么当一个区间内最大值小于m,就不考虑继续递归。
所以,只需维护两个数组,一个代表区间总和,另一个代表区间最大值,其余没什么要特殊注意的了。
所以,只需维护两个数组,一个代表区间总和,另一个代表区间最大值,其余没什么要特殊注意的了。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...