HDU 2852 KiKi's K-Number 树状数组
2024-08-27 08:02:21
先补充从n个数中求第k小数的理论知识。。。。。。。。
睡觉去~
------------------------------------------又要睡觉的分割线------------------------------------------
HDU:http://acm.hdu.edu.cn/showproblem.php?pid=2852
题目大意,给定三种操作:
0 a代表插入一个数
1 a代表删除掉a这个数
2 a k 查询比a大的第k个数
跟着大神走~树状数组+二分
树状数组更新的求和的时间都只要log(n)
#include<cstdio>
#include<cstring>
const int MAXN=100000+10;
int data[MAXN]; //设置data为统计比该下标小的元素个数 inline int lowbit(int x)
{
return x&(-x);
} int sum(int x)
{
int res=0;
while(x>0)
{
res+=data[x];
x-=lowbit(x);
}
return res;
} void add(int id,int t)
{
while(id < MAXN)
{
data[id]+=t;
id+=lowbit(id);
}
} void findk(int x,int k) // >=x kth number
{
int L=x+1;
int R=MAXN; int cur_sum=sum(x);
while(L<R)
{
int mid=(L+R)>>1; //这里并不会越界
int mid_sum=sum(mid); if(mid_sum - cur_sum < k)
L=mid+1;
else
R=mid; } if(L==MAXN)
printf("Not Find!\n");
else
printf("%d\n",L); } int main()
{
int T;
while(~scanf("%d",&T))
{
memset(data,0,sizeof(data)); while(T--)
{
int action,temp;
scanf("%d%d",&action,&temp);
if(action==0) //push
{
add(temp,1);
}
else if(action==1) //pop
{
if(sum(temp)==sum(temp-1))
printf("No Elment!\n");
else
add(temp,-1);
}
else if(action==2) //query
{
int k;
scanf("%d",&k);
findk(temp,k);
} } }
return 0;
}
最新文章
- svn 几个常用命令(持续更新)
- Java_ClassLoader内存溢出-从tomcat的reload说起
- C#、js、json Datetime格式总结
- error: ‘for’ loop initial declarations are only allowed in
- c# 多显示器设置主屏幕(Set primary screen for multiple monitors)
- Mojo 返回一维和二维数组
- POJ 3301 Texas Trip
- 【转】JDBC学习笔记(5)——利用反射及JDBC元数据编写通用的查询方法
- [转]TOMCAT配置多端口
- git的基本使用方式
- ubuntu git hub 建立仓库
- for循环 例子
- Apple ID双重认证验证码无法输入问题
- github咋用昂
- SRM464
- Linux内核分析作业 NO.1
- OnClickListener接口
- 首页大屏广告效果 jquery轮播图淡入淡出
- PHPWAMP自启异常,服务器重启后Apache等服务不会自动重启的原因分析
- Java23种设计模式学习笔记【目录总贴】
热门文章
- 【Educational Codeforces Round 36 C】 Permute Digits
- Irrlicht 3D Engine 笔记系列 之 教程5- User Interface
- linux host主机名配置
- activity-启动动画的设定(下面弹出出现,弹入下面消失)
- LinearLayout-margin不起作用的处理
- PHP glob() 函数详解
- Linux桌面新彩虹-Fedora 14 炫酷应用新体验
- Scala中的“=>;”和“<;-”
- 洛谷 P1724 东风谷早苗
- Apache httpd.conf 配置文件语法验证