HDU 2852 KiKi's K-Number (树状数组+二分)

第k大区间和问题的树状数组实现 问题描述:     给定一个整数序列a[1..N],定义sum[i][j]=a[i]+a[i+l]+……+a[j],将所有的sum[i][j]从小到大排序(其中i,j满足1 输入格式(ktm.in)     第一行有两个整数N,k,其中0     接下来N行每行一个整数。顺序给出序列a的元素。 输出格式(kth.out)                           sum序列 阅读详情

KiKi's K-Number

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4144    Accepted Submission(s): 1866


Problem Description
For the k-th number, we all should be very familiar with it. Of course,to kiki it is also simple. Now Kiki meets a very similar problem, kiki wants to design a container, the container is to support the three operations.

Push: Push a given element e to container

Pop: Pop element of a given e from container

Query: Given two elements a and k, query the kth larger number which greater than a in container;

Although Kiki is very intelligent, she can not think of how to do it, can you help her to solve this problem?
 

Input
Input some groups of test data ,each test data the first number is an integer m (1 <= m <100000), means that the number of operation to do. The next m lines, each line will be an integer p at the beginning, p which has three values:
If p is 0, then there will be an integer e (0 <e <100000), means press element e into Container.

If p is 1, then there will be an integer e (0 <e <100000), indicated that delete the element e from the container  

If p is 2, then there will be two integers a and k (0 <a <100000, 0 <k <10000),means the inquiries, the element is greater than a, and the k-th larger number.
 

Output
For each deletion, if you want to delete the element which does not exist, the output "No Elment!". For each query, output the suitable answers in line .if the number does not exist, the output "Not Find!". 
 

Sample Input
  
5 0 5 1 2 0 6 2 3 2 2 8 1 7 0 2 0 2 0 4 2 1 1 2 1 2 2 1 3 2 1 4
 

Sample Output
  
No Elment! 6 Not Find! 2 2 4 Not Find!
 

Source
 

从a+1到100000二分。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm>
using namespace std;
#define  LL long long
const int N = 100000;
int sum[N+3];
int num[N+3];
int lowbit(int x)
{
    return x&-x;
}
void add(int x,int y)
{
    for(int i=x;i<=N;i+=lowbit(i))
    {
        sum[i]+=y;
    }
}
int query(int x)
{
    int ans=0;
    for(int i=x;i>=1;i-=lowbit(i))
    {
        ans+=sum[i];
    }
    return ans;
}
void work(int a,int k)
{
    if(query(N)-query(a)<k)
    {
        printf("Not Find!\n");
        return;
    }
    int l=a+1,r=N;
    int mid=(l+r)>>1;
    while(l!=r)//注意二分的使用。
    {
        int now=query(mid)-query(a);
        if(now>=k)
        {
            r=mid;
        }
//      else if(now==k)
//        {
//            while(num[mid]==0)
//            {
//                mid--;
//            }
//            printf("%d\n",mid);
//            return ;
//        }
        else
        {
//            while(num[mid]==0)
//            {
//                mid++;
//            }
            l=mid+1;
        }
        mid=(l+r)>>1;
    }
    printf("%d\n",r);
    
}
int main()
{
    int n,p,e,a,k;
    while(~scanf("%d",&n))
    {
        memset(sum,0,sizeof sum);
        memset(num,0,sizeof num);
        while(n--)
        {
            scanf("%d",&p);
            if(p==0)
            {
                scanf("%d",&e);
                num[e]++;
                add(e,1);
            }
            else if(p==1)
            {
                scanf("%d",&e);
                if(num[e]==0) printf("No Elment!\n");
                else num[e]--,add(e,-1);
            }
            else if(p==2)
            {
                scanf("%d%d",&a,&k);
                work(a,k);
            }
        }
    }
}


基于ensp大学网络规划与设计(完整文档+ensp拓扑图) 大家好,我是小华学长,一名计算机领域的博主。经过多年的学习和实践,我积累了丰富的计算机知识和经验,在这里我想与大家分享我的学习心得和技巧,帮助你成为更好的程序员。 作为一名计算机博主,我一直专注于编程、算法、软件开发等领域,在这些方面积累了大量的经验。我相信分享是一种双赢的方式,通过分享,我可以帮助他人提升技术水平,同时也能够得到学习交流的机会。 在我的文章中,你将会看到我对于各种编程语言、开发工具以及常见问题的解析和分析。我会结合自己的实际项目经验,为你提供实用的解决方案和优化技巧。我相信这些经验不仅能够 阅读详情

相关推荐

改善电流不匹配的级联电流镜布局设计 2002

模拟金属氧化物半导体 (MOS) 集成电路的性能在很大程度上取决于匹配精度的因素。 电流镜的匹配精度在模拟 IC 性能中尤为重要。 布局技术和器件尺寸被认为是可以在很大程度上改善匹配行为的主要因素。 尽管这些信息很重要,但对这两个因素的研究或研究有限。 在本文中,我们基于 Lan 等人 [1999] 提出的简单电流镜提出了一种新的级联电流镜布局技术。 Cascode电流镜的新布局在参数梯度存在的情况下改善了匹配特性。 讨论了跨晶体管有源区域的阈值梯度对电流镜匹配特性的影响。 使用 SPICE 仿真比较了新

Srfun的博客 4234

树状数组:第K大值

转载勿喷,只为自己以后好找一点。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 原文:

u010839163的专栏 3193

ESP-01S使用micropython,利用Thonny烧写固件

在家舒服的太久了,想学习点新的东西,这次看上了ESP8266系列的联网设备,想自己做点小玩意出来耍耍,下面跟我一起来学习吧。本篇主要记录固件的烧写及测试。Thonny下载链接不算难,但是网上资源较少。也是提醒自己不要忘记这个步骤,记录一下,也分享给和我一样开始接触的小伙伴,加油加油,万事开头难。

weixin_43422072的博客 1693

HDU 2852 KiKi's K-Number 树状数组

KiKi's K-Number Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1593    Accepted Submission(s): 677 Problem Description For the k-t

sky_fighting的专栏 2042

STM32H7B0VBT6使用Free RTOS配置SD卡+Fatfs文件管理系统

STM32H7B0VBT6使用Free RTOS配置SD卡+Fatfs文件管理系统,记录配置过程

Jack的小窝 5942

GPIB通讯的代码怎么写

GPIB(General Purpose Interface Bus)是一种用于连接计算机和测试设备的接口标准。 在写 GPIB 通讯的代码时,首先需要在计算机上安装 GPIB 驱动程序。然后,使用相应的编程语言和 GPIB 库函数来操作 GPIB 设备。 下面是一个使用 Python 语言和 pyvisa 库来实现 GPIB 通讯的示例代码: import visa# 创建 Visa 资源管理器...

weixin_35752645的博客 1547

求第K小/大的数(树状数组解法)

求第K小/大数这个题目经常出现,面试,考试以及OJ上都有类似的题目。 首先声明一点,个人觉得既然是第K小(大是一样的),那么重复的元素就不应该算了,当然如果算了就相对简单一些。。 最原始的解法,快排,然后取第K个数。或者是构建一个小顶堆,遍历数组取最小的K个数,再然后还有所谓的快速选择,有人证明了可以在O(n)时间内解决,不过我不太清楚这种算法是否对重复元素有效(但看了代码其实就是快排的一种应

xueerfei的专栏 7984

TI硬件笔试面试题型解析上

摘要: 本专栏聚焦大厂硬件笔试面试题解析,当前第14期以德州仪器(TI)为例,涵盖模拟电路与数字电路核心考点。模拟电路部分涉及最大功率传递定理、运放设计(虚短/虚断)、共模抑制比(CMRR)及高频PCB信号完整性;数字电路包括CMOS与TTL对比、建立/保持时间、竞争冒险消除、D触发器分频及“线与”逻辑实现。文章强调通过例题掌握解题方法与知识点,助力读者应对硬件工程岗位的笔试与面试挑战,附常见考点总结与实用建议。全文注重理论与实践结合,提供典型题型解析与设计思路。(150字)

启芯硬件的博客 951

权值线段树&树状数组实现求第k大&前驱&后继

题面 思路 这题其实是平衡树的板子…; 用树状数组做需要离线离散化处理; 首先增加删除一个数很容易,直接用树状数组的加一减一即可; 如果要查询数值xxx的排名 其实相当于问我们1到x-1有多少个数; 那么query后加一即可; 如果要查第kkk小的数,这个和往常的树状数组不同,要写一个新的函数; 有两种理解方式,一种是类似倍增LCA的想法; 另一种是反向求和; 比如说我们要131313 我们用二进制的思想去拼凑他,13=8+4+113=8+4+113=8+4+1 核心思想就是找到一个小于它但是最大

weixin_45724872的博客 1167

Chrome DevTools MCP 实战完整教程

本教程介绍了Chrome DevTools MCP(Model Context Protocol)在智能Web测试中的应用。该系统通过MCP协议将Chrome开发者工具能力标准化,并与AI结合,提供了统一的测试解决方案。核心功能包括智能自动化、深度调试分析和性能监控优化。教程详细讲解了环境搭建、MCP服务器配置、参数说明及多种工具集(输入自动化、导航、设备仿真、性能分析等)的使用方法。通过mcp-use库的MCPAgent和MCPClient组件,用户可以轻松实现自然语言驱动的浏览器操作和测试流程管理。

blues_C的博客 3807

【异常】Coze/扣子 Workflow 调用报 4200 错误深度解析

Coze API 的。

奶爸的编程之路,也就一周冷个三天 302

hdu 2852 KiKi's K-Number (树状数组+二分)

Problem Description For the k-th number, we all should be very familiar with it. Of course,to kiki it is also simple. Now Kiki meets a very similar problem, kiki wants to design a container, the conta...

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 250

Android14 SystemUI如何实现下拉菜单栏高斯模糊背景效果(类似于毛玻璃效果)

我们都知道,从Android12起,下拉菜单栏控制中心都是黑色的,看起来非常不美观,而且国内的手机系统UI都做的比较美观,大部分的下拉菜单UI背景都是实现了高斯模糊效果,所以客户也会要求实现类似于这样的效果。在以前的Android项目中,实现下拉菜单栏的模糊背景就是通过截图的方式进行替换背景,而这种方式下拉菜单背景极易替换不了,就算是在各个地方都适配,还是有概率在复杂场景或者一些测试手法下出现背景是黑的情况,并且这种方式还比较影响性能,毕竟每次都要去截图一次,多做了额外的事。

热衷于Android Framework和系统APP的修改经验分享 1795

HDU - 2852 KiKi's K-Number(树状数组+二分)

题目链接 题意: 给定一个容器,该容器支持的操作有三种: 1、加入一个元素 2、删除一个元素 3、查询 $k th$ 比 $a$ 大的数 思路: 元素的值在1e5之内,可以直接用树状数组记录出现的次数 查询的时候用二分查找第k大的数。 1 /* 2 * Author: windystreet 3 * Date : 2018-08-10 09:05:1...

176

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

HDU 2852 KiKi's K-Number 二分+树状数组

HDU 2852 二分+树状数组

klc的博客 537

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

HDU2852 KiKi's K-Number(二分+树状数组)

KiKi's K-Number Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3307    Accepted Submission(s): 1483 Problem Description For the k-th

KeyboardPianist的博客 527

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

HDU 2852 KiKi's K-Number 树状数组 + 二分

一共最多才100000个数,并且数值范围0~100000。 树状数组 C[i] 记录数值为 i 的数有多少个。 删除时如果Query( a ) - Query( a - 1 ) == 0 则该数不存在。 求大于a的第K大数只需要对大于a的数二分查找一下,Query( MAXN ) - Query(a)为大于 a 的数的总个数,如果小于K 则不存在。 1 #includ...

aegt43853的博客 147

HDU 2852 KiKi's K-Number(树状数组+二分)

KiKi's K-Number Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3847    Accepted Submission(s): 1707 Problem Description For the k-

K键盘里的青春K 734

HDU 2852 KiKi's K-Number【 树状数组 二分 】

题意:给出m个操作, 0:是增加一个数,add(x,1) 1:是删除一个指定的数,这个是看sum(x) - sum(x-1)是否为0,为0的话则不存在,不为0的话,则add(x,-1) 2:是查询比x大的数中第k大的数 反思:做的时候没想到二分,长教训了,以后一定得注意查找的费时。不过这题也要注意二分的姿势。以后我做题得拿什么了。 上代码: #include #includ

白黑菜的博客 218

HDU 2852 KiKi's K-Number [树状数组+二分答案]【数据结构】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2852———————————————————–. KiKi’s K-NumberTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3865

Tabris的博客 462

[HDU - 2852] KiKi's K-Number (树状数组+二分)

链接 http://acm.hdu.edu.cn/showproblem.php?pid=2852 题意 现在需要你对一个空序列做nnn次操作,操作分三种 0  x0\ \ x0  x :向序列中加入一个xxx; 1  x1\ \ x1  x :删除序列中的数xxx,如果xxx不存在,输出No Elment!; 2&...

梧桐 331

HDU 2852 KiKi's K-Number (树状数组 && 二分)

题意 :给出对容器的总操作次数n, 接下来是这n个操作。这里对于一个容器提供三种操作, 分别是插入、删除和查找。输入0 e表示插入e、输入1 e表示删除e,若元素不存在输出No Elment!、输入2 e k表示查找比e大且第k大的数, 若不存在则输出Not Find! 分析 :这里考虑树状数组做的原因是在第三个操作的时候, 只要我们记录了元素的总数, 那通过求和操作...

136

KiKi's K-Number HDU - 2852 (树状数组+二分)

For the k-th number, we all should be very familiar with it. Of course,to kiki it is also simple. Now Kiki meets a very similar problem, kiki wants to design a container, the container is to support t...

weixin_43740907的博客 212

hdu 2852 KiKi's K-Number 二分+树状数组

http://acm.hdu.edu.cn/showproblem.php?pid=2852 题意:给出三种操作,     0 在容器中插入一个数。     1 在容器中删除一个数。     2 求出容器中大于a的第k大元素。 思路:二分+树状数组 树状数组的特点就是对点更新,成段求和,而且常数非常小。原始 的树状数组只有两种操作,在某点插入一个数 和 求1到i的所有数的和。 这道

Chris_Home 640

hdu2852 KiKi's K-Number 树状数组+二分查找求第k大的数

For the k-th number, we all should be very familiar with it. Of course,to kiki it is also simple. Now Kiki meets a very similar problem, kiki wants to design a container, the container is to support t...

W349652743的博客 333

HDU2852 KiKi's K-Number 树状数组+二分

这题就是给了你三种操作, 1:往容器中一个元素 x 2::把容器中的元素x删除 3:查询比 x大的第k个数 想法:添加元素跟删除元素  直接是以数本身为序号然后以 value值为1和-1即可,相当于计数,至于找比x第k个大的数,那就看看当前往后数k个数的第一个数是哪个就可以了,一开始直接找出来,然后往后暴力的扫了一遍,结果错了,没关系,反应很快,直接改了个二分查找,然后就过了,弄清

shaonianguai 797
上一篇: HDU 1892 See you~(二维树状数组 单点更新)
下一篇: HDU 4000 Fruit Ninja(树状数组)
Mr_Treeeee
博客等级 码龄10年 38粉丝 551原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值