当前位置: 首页 > article >正文

树状数组倍增

所需变量

a i a_i ai 离散化后,第 i i i 个数出现过的次数。
t r e e i tree_i treei 树状数组。

思路

一个简单的常识,每个数的排名,等于小于它的数的数量,也就是 ( ∑ k = 1 n a i ) + 1 (\sum_{k = 1}^{n} a_i)+1 (k=1nai)+1
要求排名第 k k k 的数,其实就是 k k k 的最大值。
也就是 ( ∑ k = 1 n a i ) + 1 ≤ k − 1 (\sum_{k = 1}^{n} a_i)+1 \leq k-1 (k=1nai)+1k1
左边边可以用树状数组来求,枚举一个 r r r,最大的就是 k − 1 k-1 k1 了。这个地方就要用到倍增了。

树状数组第 i i i ∑ j = i − l o w b i t ( i ) + 1 i a i \sum_{j=i-lowbit(i)+1}^{i} a_i j=ilowbit(i)+1iai

我们可以倍增枚举 2 l o g n , 2 l o g n − 1 , . . . , 1 2^{log_n},2^{log_{n-1}},...,1 2logn,2


http://www.kler.cn/a/572800.html

相关文章:

  • 轮训调接口
  • AI生成的web框架 包含前后端 k8s管理等
  • 火语言RPA--删除PDF页
  • 电子电气架构 --- 集成式与分布式的对比
  • 深度生成模型(四)——VAE 简单项目实战 VAE on CelebA
  • 06 HarmonyOS Next性能优化之LazyForEach 列表渲染基础与实现详解 (一)
  • Pytorch的一小步,昇腾芯片的一大步
  • 演示汉字笔顺的工具
  • 构建一个Django的应用程序
  • MATLAB仿真:涡旋光束光强和相位分布同时展示
  • 图漾PercipioIPTool软件使用
  • setlocale()的参数,“zh_CN.UTF-8“, “chs“, “chinese-simplified“的差异。
  • 人工智能神经网络基本原理
  • STM32---FreeRTOS中断管理试验
  • KIKKKKKKK::::::::::::::
  • MR 1. 孟德尔随机化在生物医学研究中的应用概述
  • 探秘鸿蒙 HarmonyOS NEXT:权限申请策略指南
  • Linux网络 NAT、代理服务、内网穿透
  • c语言中的主要知识点
  • Qt:事件