主席树 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 ...
随机推荐
- POJ 2096 Collecting Bugs (概率DP,求期望)
Ivan is fond of collecting. Unlike other people who collect post stamps, coins or other material stu ...
- 2019牛客多校第一场H XOR 线性基模板
H XOR 题意 给出一组数,求所有满足异或和为0的子集的长度和 分析 n为1e5,所以枚举子集肯定是不可行的,这种时候我们通常要转化成求每一个数的贡献,对于一组数异或和为0.我们考虑使用线性基,对这 ...
- [Arc083D/At3535] Restoring Road Network - 最短路,结论
[Arc083D/At3535] 有 \(N\) 个城市,城市与城市之间用长度为整数的无向道路连接. 现有一考古学家找到了一张 \(N×N\) 的表 \(A\) ,这张表代表了这 \(N\) 座城市两 ...
- Supervision meeting with Liu
data stream;streampipe/nifi data flow:1. algorithm;;;; top-k pattern, motif and so on 2. implication ...
- [转]memory analyzer 使用方法
[转]http://wensong.iteye.com/blog/1986449 最近一段时间一直在研究热部署,热部署中涉及到一个比较头痛的问题就是查内存泄露(Memory Leak),于是乎在研究热 ...
- 题解 AT4170 【[ABC103A] Task Scheduling Problem】
翻译 有 \(3\) 个正整数 \(a\).\(b\).\(c\),请你输出这 \(3\) 个数中的最大值 \(-\) 最小值的差. 分析 求最大值 \(-\) 最小值的差,我们自然可以使用 for ...
- python笔记-01
Python环境安装 1.Windows下一键环境安装包 2.Python2.X与Python3.X 什么是代码? 代码是现实世界事物在计算机世界中的映射 什么是写代码? 写代码是将现实世界中的事物用 ...
- 《深入理解Java虚拟机》读书笔记五
第六章 类文件结构 1.无关性的基石 各种不同平台的虚拟机与所有平台都统一使用程序存储格式——字节码是构成平台无关的基石. 实现语言无关性的基础仍然是虚拟机和字节码存储格式,Java虚拟机不和包括Ja ...
- oracle 数据库手动备份和恢复
一.备份命令: 1.cmd : exp 2.cmd :用户名/密码@ip地址/数据库名 如: yyj/yyj@172.12.5.5/orcl 要导出的数据库 3.回车:输入要输出的 ...
- spring的IOC过程剖析
先看下类的关系图,看图说话