主席树 hdu 4417
求一个区间内小于等于limit的数;
主席树模板题。
求出每一个节点的sum;
#include<cstdio>
#include<algorithm>
#include<math.h>
#include<string.h>
using namespace std;
const int maxn=1e5+;
int a[maxn],b[maxn*],cnt,len;
struct Node{int l,r,limit;}ask[maxn];
int Root[maxn];
struct node{int ln,rn,sum;}tree[maxn*];
void build(int &x,int l,int r)
{
++cnt;
x=cnt;
tree[cnt].sum=;
if(l==r) return;
int mid=l+r>>;
build(tree[cnt].ln,l,mid);
build(tree[cnt].rn,mid+,r);
}
void add(int pos,int l,int r,int &x,int y)
{
tree[++cnt]=tree[y];
tree[cnt].sum++;
x=cnt;
int mid=l+r>>;
if(l==r) return;
if(pos<=mid) add(pos,l,mid,tree[cnt].ln,tree[y].ln);
else add(pos,mid+,r,tree[cnt].rn,tree[y].rn);
return;
}
int query(int l,int r,int x,int y,int limit)
{
int mid=l+r>>;
int ans=;
if(l==r){
int tmp=tree[y].sum-tree[x].sum;
return tmp;
}
if(limit>mid){
int left1=tree[x].ln,left2=tree[y].ln;
ans+=tree[left2].sum-tree[left1].sum;
if(limit>mid) ans+=query(mid+,r,tree[x].rn,tree[y].rn,limit);
}
else{
ans+=query(l,mid,tree[x].ln,tree[y].ln,limit);
}
return ans;
}
void init()
{
cnt=;
}
int main()
{
int T;
scanf("%d",&T);
int ccnt=;
while(T--){
init();
int n,m;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
b[++cnt]=a[i];
}
for(int i=;i<=m;i++){
scanf("%d%d%d",&ask[i].l,&ask[i].r,&ask[i].limit);
ask[i].l++;ask[i].r++;
b[++cnt]=ask[i].limit;
}
sort(b+,b++cnt);
len=unique(b+,b++cnt)-b-;
build(Root[],,len);
for(int i=;i<=n;i++){
a[i]=lower_bound(b+,b++len,a[i])-b;
add(a[i],,len,Root[i],Root[i-]);
}
printf("Case %d:\n",++ccnt);
for(int i=;i<=m;i++){
ask[i].limit=lower_bound(b+,b++len,ask[i].limit)-b;
if(!ask[i].limit) printf("0\n");
else{
int ans=query(,len,Root[ask[i].l-],Root[ask[i].r],ask[i].limit);
printf("%d\n",ans);
}
}
}
return ;
}
主席树 hdu 4417的更多相关文章
- 主席树 hdu 4348
题意:有一个由n个数组成的序列,有4中操作: 1.C l r d [l,r]这段区间都加上d 2.Q l r 询问[l,r]这段区间的和 3.H l r t 询问之前t时间[l,r]的区间和 4.B ...
- dfs序 线段树 dfs序列 主席树
并查集 #include<stdio.h> ]; void sset(int x) { ;i<=x;i++) stt[i]=i; } int ffind(int x) { if(x= ...
- HDU 4417 Super Mario(主席树求区间内的区间查询+离散化)
Super Mario Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- HDU 4417:Super Mario(主席树)
http://acm.hdu.edu.cn/showproblem.php?pid=4417 题意是:给出n个数和q个询问,每个询问有一个l,r,h,问在[l,r]这个区间里面有多少个数是小于等于h的 ...
- hdu 4417 Super Mario (主席树)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4417 题意: 给你段长为n的序列,有q个询问,每次询问区间[l.r]内有多少个数小于等于k 思路: 之前用 ...
- Super Mario HDU 4417 主席树区间查询
Super Mario HDU 4417 主席树区间查询 题意 给你n个数(编号从0开始),然后查询区间内小于k的数的个数. 解题思路 这个可以使用主席树来处理,因为这个很类似查询区间内的第k小的问题 ...
- HDU 4417 Super Mario 主席树
分析:找一个区间里小于等于h的数量,然后这个题先离散化一下,很简单 然后我写这个题主要是熟悉一下主席树,其实这个题完全可以离线做,很简单 但是学了主席树以后,我发现,在线做,一样简单,而且不需要思考 ...
- 主席树:HDU 4417 Super Mario
Super Mario Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- Super Mario HDU - 4417 (主席树)
Mario is world-famous plumber. His “burly” figure and amazing jumping ability reminded in our memory ...
随机推荐
- [Python]jieba切词 添加字典 去除停用词、单字 python 2020.2.10
源码如下: import jieba import io import re #jieba.load_userdict("E:/xinxi2.txt") patton=re.com ...
- 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(6.15)-- 写命令
6.15 Write command 写命令 写命令写数据和元数据,如果适用介质,发到逻辑块相应的I/O controller.主机也可以指定保护信息,作为操作的一部分包含进来. 命令用Command ...
- 【已解决】使用 yarn 安装时,报错node_modules\node sass:Command failed.
npm install -g mirror-config-china --registry=http://registry.npm.taobao.org npm install node-sass y ...
- dubbo整合SSM登录案例
基于dubbo/zookeeper/SSM的分布式工程 一.项目结构
- hibernate跟Mybatis/ ibatis 的区别,为什么选择?(转)
第一章 Hibernate与MyBatisHibernate 是当前最流行的O/R mapping框架,它出身于sf.NET,现在已经成为Jboss的一部分. Mybatis 是另外一种优秀的O/R ...
- msfconsole启动失败并报错`not_after=': bignum too big to convert into `long'的解决方法
1.启动msfconsole失败并报如下错误: /usr/share/metasploit-framework/lib/msf/core/payload/android.rb:86:in `not_a ...
- 题解 【Codefoeces687B】Remainders Game
题意: 给出c1,c2,...cn,问对于任何一个正整数x,给出x%c1,x%c2,...的值x%k的值是否确定; 思路: 中国剩余定理.详见https://blog.csdn.net/acdream ...
- 【Python】字符串切片
- 快速ni
代码: while(p>0) (mul(a,b)) = a*b; { 等同于二分 if(p%2==1) mul(ans,a); 目的是为了二分个基数的二次方乘 ...
- 同一域名的ASP.NET网站实现Session共享
Session共享主要保证两点: 前台Asp_SessionId的Cookie作用域为顶级域名,且值相同 后端Session公用同一源 通过自定义HttpModule可以实现这两个需求 /// < ...