码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 带修莫队小结


    • 怎么让莫队支持修改呢?
    • 莫队本质是一种比较优化的暴力查找法
    • 在通过分块操作后把复杂度降低
    • 这个降低的复杂度的大小主要和你分块的方法有着巨大的关系
    • 可以证明取块长为pow(n,(double)2/(double)3)
    • 在最普通的莫队里,我们记录修改的左右端点l,r
    • 而修改涉及到先后顺序问题(因为莫队的排序),所以要增加一维t,把修改时间记录下来(也代表之前修改了多少次)
    • 询问的排序方式为:左端点所在块作为第一关键字,右端点所在块作为第二关键字,修改时间作为第三关键字
    • 排序分块好了,开始实现(这里不讲普通莫队那块的实现了,前面讲过)
    • 首先,所对应的修改位置在当前查询的区间内才需要修改
    • 所以开2数组记录第几次修改需要的位置和变化
    • 再是排序分块好了就不保证修改次数达到了每次询问所需的修改次数
    • 可能到下一个询问就多了或少了
    • 所以多设个T来记录修改次数
    • 代入2个while循环内,分别对应修改少了的处理和修改多了的处理
    • 既然有修改少了,就要增加修改
    • 增加修改就是利用之前开的那2数组判断在不在查询区间再修改(删掉旧的,改来新的)就行
    • 增加修改的同时,开个数组记录下某次修改之前的信息,为修改多了进行还原作准备
    • 而修改多了,就要对修改进行还原
    • 同样利用之前开的那数组和前面为还原开的数组判断在不在查询区间再修改(删掉多的,还原旧的)就行
    • 最后记录答案完结
  • 相关阅读:
    【阿旭机器学习实战】【24】信用卡用户流失预测实战
    JavaScript简介
    R语言可视化散点图(scatter plot)图、为图中的部分数据点添加标签、始终显示所有标签,即使它们有太多重叠、ggrepel包来帮忙
    Spring 如何自己创建一个IOC 容器
    创意电子学-小知识:电容器
    数组补全(秋季每日一题 10)
    Java高并发编程卷二(二) 锁
    数字孪生项目:突破技术难关,引领未来发展
    C++一行代码实现任意系统函数Hook
    k8s:部署k8s单master节点集群(kubeadm)v1.23.13
  • 原文地址:https://blog.csdn.net/weixin_59624686/article/details/126294508
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号