树状数组与离散化与求第K大模板
树状数组模板:
//Cnt为数组的界
//cnt[i]为编号或者数值上小于id的数量
void Update(LL Id)
{while(Id<=Cnt){cnt[Id]++;Id+=lowbit(Id);}
}
LL num(LL Id)
{LL ans=0;while(Id>0){ans+=cnt[Id];Id-=lowbit(Id);}return ans;
}
离散化
//arr为保存原数据的数组
//id为保存新的ID的数组
sort(arr+1,arr+1+n);
Cnt=unique(arr+1,arr+1+n)-arr-1;
for(LL i=1;i<=n;i++) id[i]=lower_bound(arr+1,arr+1+Cnt,p[i].x)-arr;
求第K大的模板
void add(int x,int val)
{while(x<size){c[x]+=val;x+=lowbit(x);}
}
int sum(int x)
{int ans=0;while(x){ans+=c[x];x-=lowbit(x);}return ans;
}
//以上为树状数组的常规代码
int query(int k)
{int ans=0,cnt=0;for(int i=20;i>=0;i--){ans+=(1<<i);
//这里使用了二进制的思想,去卡那个目标的第k大,当ans小于第K大时,ans就会增加,当ans大于等于第K大
//时,ans就放弃这次增加,这样最后得到的ans必然是第K大-1if(ans>=maxn||cnt+c[ans]>=k){ans-=(1<<i);}else{cnt+=c[ans];}}return ans+1;
}
转载于:https://www.cnblogs.com/fly-white/p/10092749.html
树状数组与离散化与求第K大模板相关推荐
- szu 寒训第二天 树状数组 二维树状数组详解,以及树状数组扩展应用【求逆序对,以及动态第k小数】
树状数组(Binary Index Tree) 树状数组可以解决可以转化为前缀和问题的问题 这是一类用以解决动态前缀和的问题 (有点像线段树简版) 1.对于 a1 + a2 + a3 + - + an ...
- Color the ball(树状数组区间更新+单点求值)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1556 Color the ball Time Limit: 9000/3000 MS (Java/Ot ...
- XJTUOJ wmq的队伍(树状数组求 K 元逆序对)
题目链接:http://oj.xjtuacm.com/problem/14/[分析]二元的逆序对应该都会求,可以用树状数组.这个题要求K元,我们可以看成二元的.我们先从后往前求二元逆序对数, 然后对于 ...
- [Split The Tree][dfs序+树状数组求区间数的种数]
Split The Tree 时间限制: 1 Sec 内存限制: 128 MB 提交: 46 解决: 11 [提交] [状态] [讨论版] [命题人:admin] 题目描述 You are giv ...
- 0x42.数据结构进阶 - 树状数组
目录 一.树状数组与逆序对 A.luogu P1908 逆序对(模板题) B.AcWing 241. 楼兰图腾 树状数组的拓展应用 1.区间加,求单点值 A.AcWing 242. 一个简单的整数问题 ...
- 最长上升子序列(LIS)/最长不上升子序列问题算法详解+例题(树状数组/二分优化,看不懂你来打我)
目录 最长上升子序列 一.朴素做法O(2n)O(2^n)O(2n) 二.优化做法O(nlogn)O(nlogn)O(nlogn) 三.例题引入:P1020 导弹拦截(求最长上升子序列和最长不上升子序列 ...
- csu 1757(贪心或者树状数组)
1757: 火车入站 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 209 Solved: 51 [Submit][Status][Web Boar ...
- HDOJ/HDU 1556 Color the ball(树状数组)
Problem Description N个气球排成一排,从左到右依次编号为1,2,3-.N.每次给定2个整数a b(a <= b),lele便为骑上他的"小飞鸽"牌电动车从 ...
- HDU 5869 Different GCD Subarray Query 树状数组 + 一些数学背景
http://acm.hdu.edu.cn/showproblem.php?pid=5869 题意:给定一个数组,然后给出若干个询问,询问[L, R]中,有多少个子数组的gcd是不同的. 就是[L, ...
最新文章
- 正视自己的所想所求,活出真实的自己
- 论文阅读:An Enhanced Deep Feature Representation for Person Re-identification
- 组件中props参数的应用
- Arraylist、HashSet去重复 treeSet排列实现方法 HashMap遍历取值
- 大地发生了变化写具体_小学语文三年级下册期末检测卷 (2)
- location 拦截所有_让它帮你干掉所有流氓软件,还你一个清静系统
- 全世界的狗都没有“生殖隔离” | 今日趣图
- 003之MFCSocket异步编程(指针机制)
- bigdecimal 科学计数转普通计数_通用计数器的应用价值
- android 短信优先级,Android-消息机制
- 用VBS实现公司自动打卡
- JS表单学习笔记(思维导图)
- 一起谈.NET技术,用NuGet掌管你的Visual Studio扩展
- Android 5.1长按电源键添加重启功能
- java 动态代理 jdk为何比cglib效率低 原理总结
- 一文读懂斗鱼上市:直播江湖风云再起,强行盈利背后的艰难上市路
- VBA代码自动缩进排版-VBA代码助手一键排版功能
- 「硬见小百科」很全的二极管干货
- 寻找回文素数python
- 竖流式沉淀池集水槽设计计算_竖流沉淀池设计计算书.
热门文章
- Linux下执行.sh命令出现-bash: ./bin/start.sh: /bin/bash^M: bad interpreter: No such file or directory...
- Beego的controller怎么用嵌入实现继承问题
- 进程注入的研究与实现
- IPSEC ×××主模式的九个包交换
- angular http demo
- 将shp文件导入到GeoDatabase中
- sharepoint 2007 网站操作 显示菜单不全
- mybatis转义反斜杠_mybatis like 的坑
- 互联网协议 — IPSec 安全隧道协议
- Go 语言编程 — 高级数据类型 — 数组