主席树 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 ...
随机推荐
- java中拦截器与过滤器
注:文摘自网络,仅供自己参考 1.首先要明确什么是拦截器.什么是过滤器 1.1 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之 ...
- 模块简介与matplotlib基础
模块简介与matplotlib基础 1.基本概念 1.1数据分析 对已知的数据进行分析,提取出一些有价值的信息. 1.2数据挖掘 对大量的数据进行分析与挖掘,得到一些未知的,有价值的信息. 1.3数据 ...
- ssh排错思路
telnet远程22端口refused 先netstat -utnlp 看一下22端口监听状态(一般都不在监听) 然后systemctl restart sshd 如果有报错,执行sshd - ...
- 1080 Graduate Admission
大致题意就是有N个学生,有M个学校,每个学校的名额都是正整数.每个学生可以填K个学校志愿,N个学生一起排名以后,排名高的学生先挑学校,不保护一志愿. 题目要求: 首先,把所有学生按总成绩SUM(GE+ ...
- Wannafly Camp 2020 Day 3E 棋技哥 - 贪心,前缀和
#include <bits/stdc++.h> using namespace std; char c[505][505]; int n,m,t,a[505][505],s[505][5 ...
- Wannafly Camp 2020 Day 1A 期望逆序对 - 概率期望
分类讨论即可 #include <bits/stdc++.h> using namespace std; #define int long long const int N = 5005; ...
- 解决pjax加载页面不执行js插件的问题
个人博客 地址:http://www.wenhaofan.com/article/20180913220425 介绍 在使用jquery.pjax的时候发现加载页面时不会执行其中的layui以及jqu ...
- 跨域 node git
promise 异步回调地狱:就是多个异步请求嵌套的表现 瑕疵:后期维护难 解决:通过promise技术 什么是promise:就是一种异步编程的解决方案 有三个状态:进行中.成功了,失败了 var ...
- 自定义Nginx返回页面
1.403返回页面 #user nobody; worker_processes ; #error_log logs/error.log; #error_log logs/error.log noti ...
- Spring整合MyBatis案例练习笔记
需求: 用户登录 技术需求: Servlet+Spring+Mybatis+MVC+jsp+css+html+jquery 数据库设计: 用户表 Sql语句设计: select * from t_us ...