hdu2852KiKi's K-Number(区间K值)
http://acm.hdu.edu.cn/showproblem.php?pid=2852
区间K值写错了。。。
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
using namespace std;
#define N 100010
#define lowbit(x) (x&(-x))
int s[N<<],ff[N];
void add(int p,int da,int l,int r,int w)
{
if(l==r)
{
s[w]+=da;
return ;
}
int m = (l+r)>>;
if(p>m)
add(p,da,m+,r,w<<|);
else
add(p,da,l,m,w<<);
s[w] = s[w<<]+s[w<<|];
}
int getsum(int a,int b,int l,int r,int w)
{
if(a<=l&&b>=r)
return s[w];
int m = (l+r)>>,ans=;
if(a<=m)
ans+=getsum(a,b,l,m,w<<);
if(b>m)
ans+=getsum(a,b,m+,r,w<<|);
return ans;
}
int query(int k,int l,int r,int w)
{
if(l==r)
return l;
int m = (l+r)>>;
if(k<=s[w<<])
return query(k,l,m,w<<);
else
return query(k-s[w<<],m+,r,w<<|);
}
int main()
{
int n,a,b,c;
while(scanf("%d",&n)!=EOF)
{
memset(s,,sizeof(s));
memset(ff,,sizeof(ff));
while(n--)
{
scanf("%d",&a);
if(a==)
{
scanf("%d",&b);
ff[b]++;
add(b,,,N,);
}
else if(a==)
{
scanf("%d",&b);
if(ff[b]==)
printf("No Elment!\n");
else
{
ff[b]--;
add(b,-,,N,);
}
}
else
{
scanf("%d%d",&b,&c);
int s1 = getsum(,b,,N,);
if(s[]-s1<c)
printf("Not Find!\n");
else
{
c+=s1;
int o = query(c,,N,);
printf("%d\n",o);
}
}
}
}
return ;
}
hdu2852KiKi's K-Number(区间K值)的更多相关文章
- HDU 5919 - Sequence II (2016CCPC长春) 主席树 (区间第K小+区间不同值个数)
HDU 5919 题意: 动态处理一个序列的区间问题,对于一个给定序列,每次输入区间的左端点和右端点,输出这个区间中:每个数字第一次出现的位子留下, 输出这些位子中最中间的那个,就是(len+1)/2 ...
- HihoCoder - 1483 区间最值
给定n个数A1...An,小Ho想了解AL..AR中有多少对元素值相同.小Ho把这个数目定义为区间[L,R]的价值,用v[L,R]表示. 例如1 1 1 2 2这五个数所组成的区间的价值为4. 现在小 ...
- POJ 2104 K-th Number ( 求取区间 K 大值 || 主席树 || 离线线段树)
题意 : 给出一个含有 N 个数的序列,然后有 M 次问询,每次问询包含 ( L, R, K ) 要求你给出 L 到 R 这个区间的第 K 大是几 分析 : 求取区间 K 大值是个经典的问题,可以使用 ...
- 模板—算法—整体二分(区间k小值)
模板—算法—整体二分(区间k小值) Code: #include <cstdio> #include <algorithm> using namespace std; #def ...
- 【BZOJ】3065: 带插入区间K小值
http://www.lydsy.com/JudgeOnline/problem.php?id=3065 题意:带插入.修改的区间k小值在线查询.(原序列n<=35000, 询问<=175 ...
- bzoj 3065: 带插入区间K小值 替罪羊树 && AC300
3065: 带插入区间K小值 Time Limit: 60 Sec Memory Limit: 512 MBSubmit: 1062 Solved: 253[Submit][Status] Des ...
- bzoj 3065: 带插入区间K小值(分块)
Description 从前有n只跳蚤排成一行做早操,每只跳蚤都有自己的一个弹跳力a[i].跳蚤国王看着这些跳蚤国欣欣向荣的情景,感到非常高兴.这时跳蚤国王决定理性愉悦一下,查询区间k小值.他每次向它 ...
- HDU 2665.Kth number 区间第K小
Kth number Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- POJ 2014.K-th Number 区间第k小 (归并树)
K-th Number Time Limit: 20000MS Memory Limit: 65536K Total Submissions: 57543 Accepted: 19893 Ca ...
随机推荐
- [jquery]高级篇--获取div子元素
参考: http://zhidao.baidu.com/link?url=IfeQQBn1xMLqWvwdkKbQYJ8mC6ciGi_8M1NYkm6iQ-kXBMX2f2ylN-ckzFLiynn ...
- windows server 2003 负载平衡的详细设置步骤(转载)
声明:本文为转载. 当把一台服务器(包括Web服务器.FTP服务器或者流媒体服务器等等)放入网络中之后,随着客户端数量的不断增加,人们往往需要功能更强大.处理速度更快的服务器.为了解决这个问题,如果将 ...
- 比之前那个版本更简单的C语言实现的比较大小
之前那个是输入一堆数据,找最大那个,这次是更简单的版本,求两个数的最大值. #include "stdafx.h" #include <stdio.h> int Get ...
- 堆排序 C++
1 堆排序拥有插入排序的优点 (是一种原地排序算法只需要存储常数个元素在输入数组以外 即省空间), 同时拥有合并排序算法的复杂度 nlgn,逼格有点高 2 堆数据结构 是一个数组对象,可以被视为一颗完 ...
- 【原创】开机出现grub rescue,修复办法
出现这种问题 一般在于进行了磁盘分区(GHOST备份时也会造成)导致grub引导文件找不到.我们只要让它找到引导文件就好了. 此时屏幕上提示grub resume> 我们先输入set看下现在g ...
- jQuery.hhNewSilder 滚动图片插件
/** * jQuery.hhNewSilder 滚动图片插件 * User: huanhuan * QQ: 651471385 * Email: th.wanghuan@gmail.com ...
- php 命名空间(要求php5.3以上)
要求php5.3以上 <?phpnamespace test;// 命名空间与目录类似功能,也可定义子命名空间,用分层的方式定义:/*namespace mydir\ok\project; 在声 ...
- WPF中Application.Current的使用
WPF程序对应一个Application对象,当前的Application对象可以通过Application.Current获取,通过获取到的Application对象,我们可以做以下的事情: App ...
- Java中的异常处理机制的简单原理和应用
异常是指java程序运行时(非编译)所发生的非正常情况或错误,与现实生活中的事件很相似,现实生活中的事件可以包含事件发生的时间.地点.人物.情节等信息,可以用一个对象来表示,Java使用面向对象的方式 ...
- 渲染统计窗口(Rendering Statistics Window)
FPS(Timer per frame and FPS) frames per seconds表示引擎处理和渲染一个游戏帧所花费的时间,该数字主要受到场景中渲染物体数量和GPU性能的影响,FPS数值越 ...