K-query SPOJ - KQUERY 离线 线段树/树状数组 区间大于K的个数
题意:
给一个数列,一些询问,问你区间$[l.r]$大于$K$的个数
题解:
又一个"人尽皆知傻逼题"?
我们用一个01序列表示当前询问时,该位置的数字是否对答案有贡献,
显然,对于询问$(l,r,k)$整个区间只有大于$k$的数字对答案有贡献,
那么离线思路就有了
按k排序询问,排序数字,遍历所有询问,对于每次询问$(l,r,k)$,把所有大于K的数字插进去...
复杂度O$(nlog(n)+klog(k))$
bit
#include <bits/stdc++.h>
#define ll long long
#define IO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pp pair<int,int>
#define rep(ii,a,b) for(int ii=a;ii<=b;ii++)
#define per(ii,a,b) for(int ii=a;ii>=b;ii--)
using namespace std;
const int maxn=1e6+10;
const int maxm=1e6*4+10;
const int INF=0x3f3f3f3f;
int casn,n,m,k;
#define lb(x) x&-x
ll bit[maxn],num[maxn];
void update(int pos,int x){while(pos<=n) bit[pos]+=x,pos+=lb(pos);}
ll sum(int pos){
ll ans=0;
while(pos)ans+=bit[pos],pos-=lb(pos);
return ans;
}
ll query(int a,int b){return sum(b)-sum(a-1);}
struct quest{int l,r,k,id;}ask[maxn];
int cmp1(quest a,quest b){
return a.k<b.k;
}
int cmp(int a,int b){
return num[a]<num[b];
}
map<ll,int>pos;
ll ans[maxn];
int rk[maxn];
int main(){
//#define test
#ifdef test
freopen("in.txt","r",stdin);freopen("out.txt","w",stdout);
#endif
scanf("%d",&n);
rep(i,1,n) scanf("%d",num+i),rk[i]=i;
sort(rk+1,rk+1+n,cmp);
scanf("%d",&k);
rep(i,1,k){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
ask[i]=(quest){a,b,c,i};
}
sort(ask+1,ask+1+k,cmp1);
int pos=1;
rep(i,1,k){
while(pos<=n&&num[rk[pos]]<=ask[i].k){
update(rk[pos],1);
pos++;
}
ans[ask[i].id]=ask[i].r-ask[i].l+1-query(ask[i].l,ask[i].r);
}
rep(i,1,k) printf("%d\n",ans[i]);
#ifdef test
fclose(stdin);fclose(stdout);system("out.txt");
#endif
return 0;
}
K-query SPOJ - KQUERY 离线 线段树/树状数组 区间大于K的个数的更多相关文章
- hdu 4638 树状数组 区间内连续区间的个数(尽可能长)
Group Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- 【转载】【树状数组区间第K大/小】
原帖:http://www.cnblogs.com/zgmf_x20a/archive/2008/11/15/1334109.html 回顾树状数组的定义,注意到有如下两条性质: 一,c[ans]=s ...
- Permutation UVA - 11525(值域树状数组,树状数组区间第k大(离线),log方,log)(值域线段树第k大)
Permutation UVA - 11525 看康托展开 题目给出的式子(n=s[1]*(k-1)!+s[2]*(k-2)!+...+s[k]*0!)非常像逆康托展开(将n个数的所有排列按字典序排序 ...
- HDU 5654 xiaoxin and his watermelon candy 离线树状数组 区间不同数的个数
xiaoxin and his watermelon candy 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5654 Description Du ...
- HDU 5249 离线树状数组求第k大+离散化
KPI Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HDU 2852 (树状数组+无序第K小)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2852 题目大意:操作①:往盒子里放一个数.操作②:从盒子里扔掉一个数.操作③:查询盒子里大于a的第K小 ...
- 【bzoj4540】[Hnoi2016]序列 单调栈+离线+扫描线+树状数组区间修改区间查询
题目描述 给出一个序列,多次询问一个区间的所有子区间最小值之和. 输入 输入文件的第一行包含两个整数n和q,分别代表序列长度和询问数.接下来一行,包含n个整数,以空格隔开,第i个整数为ai,即序列第i ...
- 树状数组求第k小的元素
int find_kth(int k) { int ans = 0,cnt = 0; for (int i = 20;i >= 0;i--) //这里的20适当的取值,与MAX_VAL有关,一般 ...
- hdu 4217 Data Structure? 树状数组求第K小
Data Structure? Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- poj 2985 The k-th Largest Group 树状数组求第K大
The k-th Largest Group Time Limit: 2000MS Memory Limit: 131072K Total Submissions: 8353 Accepted ...
随机推荐
- HDU - 5073 Galaxy(数学)
题目 题意:n个点,运行移动k个点到任何位置,允许多个点在同一位置上.求移动k个点后,所有点到整体中心的距离的平方和最小. 分析:这题题目真的有点迷...一开始看不懂.得知最后是选取一个中心,于是看出 ...
- System.ComponentModel.DataAnnotations.Schema.TableAttribute 同时存在于EntityFramework.dll和System.ComponentModel.DataAnnotations.dll中
Entity Framework 与 .net4.5 的 System.ComponentModel.DataAnnotations 都有 System.ComponentModel.DataAnno ...
- vue中异步函数async和await的用法
整理的不错,收藏一下 http://blog.sina.com.cn/s/blog_13d06fc1f0102wzfr.html
- DosBox 的 DOSBOX.CONF 的详细配置说
1.首先下载 DOSbox 0.72 版. 2.下载完毕,开始安装.安装到任意目录均可.安装完毕会在开始菜单生成程序组,DOSBox.conf 文件是 DOSbox 的配置文件,保持默认配置就可 ...
- ASP.NET MVC 3 笔记
1. MVC设计模式 Ø Model:是指要处理的业务代码和数据操作代码. Ø View:主要用于跟用户打交道,并能够展示数据. Ø Controller:可以看作是 Model 和 Vie ...
- tcp_connect函数
#include <netdb.h> #include <stddef.h> #include <unistd.h> #include <strings.h& ...
- springboot13 发布和监听事件
spring中的事件驱动模型Event(也叫发布订阅模式),是观察者模式的一个典型的应用 好处:业务解耦,在不影响原来业务逻辑的情况下,加入其它业务 场景: app上线后已实现用户注册功能,现需要在用 ...
- ThinkPHP5基础学习
一.目录与文件结构 二.控制器 三.数据库 四.模型 五.模板
- flex布局下overflow失效问题
经常我们会使用flex布局,但是flex布局常常会遇到一些不可思议的麻烦,下面介绍一下overflow遇到的麻烦 我在工作中使用了左右两栏布局 .container { display: flex; ...
- scrapy框架的每个模块的用途
## 一.scrapy框架的每个模块的用途 1.spiders: 自定义爬虫 定义允许爬取的范围 定义开始爬取的url parse:一定要重写 start_request:一般不需要重写,可以通过重写 ...