题意:

  给一个数列,一些询问,问你区间$[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的个数的更多相关文章

  1. hdu 4638 树状数组 区间内连续区间的个数(尽可能长)

    Group Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  2. 【转载】【树状数组区间第K大/小】

    原帖:http://www.cnblogs.com/zgmf_x20a/archive/2008/11/15/1334109.html 回顾树状数组的定义,注意到有如下两条性质: 一,c[ans]=s ...

  3. Permutation UVA - 11525(值域树状数组,树状数组区间第k大(离线),log方,log)(值域线段树第k大)

    Permutation UVA - 11525 看康托展开 题目给出的式子(n=s[1]*(k-1)!+s[2]*(k-2)!+...+s[k]*0!)非常像逆康托展开(将n个数的所有排列按字典序排序 ...

  4. HDU 5654 xiaoxin and his watermelon candy 离线树状数组 区间不同数的个数

    xiaoxin and his watermelon candy 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5654 Description Du ...

  5. HDU 5249 离线树状数组求第k大+离散化

    KPI Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  6. HDU 2852 (树状数组+无序第K小)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2852 题目大意:操作①:往盒子里放一个数.操作②:从盒子里扔掉一个数.操作③:查询盒子里大于a的第K小 ...

  7. 【bzoj4540】[Hnoi2016]序列 单调栈+离线+扫描线+树状数组区间修改区间查询

    题目描述 给出一个序列,多次询问一个区间的所有子区间最小值之和. 输入 输入文件的第一行包含两个整数n和q,分别代表序列长度和询问数.接下来一行,包含n个整数,以空格隔开,第i个整数为ai,即序列第i ...

  8. 树状数组求第k小的元素

    int find_kth(int k) { int ans = 0,cnt = 0; for (int i = 20;i >= 0;i--) //这里的20适当的取值,与MAX_VAL有关,一般 ...

  9. hdu 4217 Data Structure? 树状数组求第K小

    Data Structure? Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  10. poj 2985 The k-th Largest Group 树状数组求第K大

    The k-th Largest Group Time Limit: 2000MS   Memory Limit: 131072K Total Submissions: 8353   Accepted ...

随机推荐

  1. vue实现筛选功能,文字选中变色

    <template> <Poptip trigger="hover" title="Title" content="content& ...

  2. HDU 1014(互质数 **)

    题意是说从 0 开始每次增加 STEP,然后模 MOD 得到一些数,问是否能得到从 0 到 MOD - 1 的所有数. 只要 STEP 与 MOD 互质就可以满足条件,也就是二者的最大公因数为 1 即 ...

  3. 二叉搜索树BST

    //遍历 void print(int p){ if(!p) return; print(left[p]); printf("%d\n",a[p]); print(right[p] ...

  4. Python学习之json序列化

    一.什么是序列化 在我们存储数据或者网络传输数据的时候,需要对我们的对象进行处理,把对象处理成方便存储和传输的数据格式.这个过程叫序列化,不同的序列化结果也不同,但目的是一样的,都是为了存储和传输 在 ...

  5. git常用命令(转载自用)

    转载自 阮一峰博客: http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 一个码农博客: http://blog.gitor.org ...

  6. luogu P3240 [HNOI2015]实验比较

    传送门 首先根据题目条件,题目中如果是=的点可以缩起来,然后\(a<b\)连边\(a\rightarrow b\),而且所有点入度为最多1,那么判掉有环的不合法情况,题目中的依赖关系就是一颗外向 ...

  7. 5.22 css和基本选择器

    1,css的三种引入方式 1,行内样式 2,内接样式 3,外接样式:链接式和导入式. HTML的缺陷: 不能够适应多种设备 要求浏览器必须智能化足够庞大 数据和显示没有分开 功能不够强大 CSS 优点 ...

  8. git修改文件夹名字

    git mv -f oldfolder newfolder git add -u newfolder (-u选项会更新已经追踪的文件和文件夹) git commit -m "changed ...

  9. 数组去重的4种方法(Which one is the fastest???嘻嘻嘻....)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. Mybatis(二)入门程序-通过id查找用户、模糊查找用户、添加用户、删除用户

    根据下图myBatis的架构,创建一个使用MyBatis的工程.       一.配置MyBatis 环境(如图) 1.sqlMapConfig.xml 首先,导入jar包(上图右边)并加载路径,然后 ...