码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 根号分治 + 入门题目


    根号分治解决的问题有这种特点:

    1. 可以将问题按照某个界限拆分为两个子问题,通常界限设为 n \sqrt n n ​
    2. 对于拆分出来的两个子问题,一部分可以暴力求解,另一部分可以使用算法求解。这样分治的话,可以使得两个子问题的时间复杂度刚好都是 n ⋅ n n\cdot \sqrt n n⋅n ​ ,得以解决问题

    题目:


    E. Array Queries

    题意:

    • 给定长度为 n n n 的序列 a a a。 m m m 次询问。
    • 每次询问给出 p , k p,k p,k。您要不断地执行操作 p ← p + a p + k p\gets p+a_p+k p←p+ap​+k,直到 p > n p>n p>n 为止。询问的答案为操作次数。
    • 1 ≤ n , q ≤ 1 0 5 1\le n,q\le 10^5 1≤n,q≤105, 1 ≤ a i ≤ n 1\le a_i\le n 1≤ai​≤n, 1 ≤ p , k ≤ n 1\le p,k\le n 1≤p,k≤n。

    思路:

    对于 k > n k> \sqrt n k>n ​ 的询问,暴力即可,枚举的次数不超过 n \sqrt n n ​ 。

    对于 k ≤ n k\leq \sqrt n k≤n ​ 的询问,可以预处理 ( p , k ) (p,k) (p,k) 状态需要跳的步数,时空复杂度 O ( n ⋅ n ) O(n\cdot \sqrt n) O(n⋅n ​) 。

    AC代码:https://codeforces.com/contest/797/submission/182309787


    D1. Frequency Problem (Easy Version)

    题意:

    给定 a 1 , a 2 , . . . , a n a_1,a_2,...,a_n a1​,a2​,...,an​,求最长的满足区间众数有至少两种的区间长度。如果不存在这样的区间,输出 0 0 0。

    n ≤ 2 × 1 0 5 , 1 ≤ a i ≤ min ⁡ ( 100 , n ) n\leq 2\times 10^5,1\leq a_i\leq \min(100,n) n≤2×105,1≤ai​≤min(100,n)

    思路:略。详见 题解 。

    AC代码:https://codeforces.com/contest/1446/submission/182314629


    D2. Frequency Problem (Hard Version)

    题意:将上一题的 1 ≤ a i ≤ min ⁡ ( 100 , n ) 1\leq a_i\leq \min(100,n) 1≤ai​≤min(100,n) 改为 1 ≤ a i ≤ n 1\leq a_i\leq n 1≤ai​≤n 。

    题解:题解 CF1446D1 【Frequency Problem (Easy Version)】

    思路:

    对于 a i > n a_i> \sqrt n ai​>n ​ 的数字,最多有 n \sqrt n n ​ 种,按照 easy.ver 的思路即可。

    对于 a i ≤ n a_i\leq \sqrt n ai​≤n ​ 的数字,枚举出现次数上界,然后双指针找最长子区间。

    AC代码:https://codeforces.com/contest/1446/submission/182317190

  • 相关阅读:
    MQ - 36 云原生:业界MQ的计算存储分离的设计与实现
    如何使用Iptables在Linux网关上转发端口
    5 张图告诉你 RocketMQ 为什么不使用 Zookeeper 做注册中心
    【机器学习入门项目10例】(十):PCA降维:简易人脸识别模型
    杨氏干涉实验
    SOA架构概述
    行业资讯 | 深圳:BIM法定化,开历史之先河
    Linux—curl 命令用法大总结
    Docker安装canal、mysql进行简单测试与实现redis和mysql缓存一致性
    功能安全Part1-名词定义
  • 原文地址:https://blog.csdn.net/weixin_51948235/article/details/128017696
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号