主席树 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 ...
随机推荐
- ms17-010 利用msf的exp和一个扫描工具的复现
0x01简介 永恒之蓝漏洞是方程式组织在其漏洞利用框架中一个针对SMB服务进行攻击的漏洞,该漏洞导致攻击者在目标系统上可以执行任意代码. 攻击对象:win7及win7以下的操作系统且开启了445端口s ...
- 数据预处理 | 使用 Pandas 进行数值型数据的 标准化 归一化 离散化 二值化
1 标准化 & 归一化 导包和数据 import numpy as np from sklearn import preprocessing data = np.loadtxt('data.t ...
- HDU-1506 Largest Rectangle in a Histogram【单调栈】
Description A histogram is a polygon composed of a sequence of rectangles aligned at a common base l ...
- linux多线程编程的应用场景
- Oracle 数据库,远程访问 ora-12541:TNS:无监听程序
1.修改网络连接IPV4设置为固定IP IP地址:192.168.100.8子网掩码:255.255.255.0默认网关:192.168.100.1首选DNS:192.168.100.1 2.修改.. ...
- [POI2005]KOS-Dicing (最大流+二分)lg3425
题面https://www.luogu.org/problemnew/show/P3425 题面说赢的最多的人最少赢几场,肯定是向二分的方向思考 建立源点向每一场比赛连容量为1的边,从每场比赛向参赛两 ...
- webpack之 plugin(插件)
plugin plugin是插件的意思,通常用来对某个现有的架构就行拓展 webpack中的插件,就是对webpack现有功能的各种扩展,比如打包优化,文件压缩等 loader和plugin区别 lo ...
- MySQL启动和停止
MySQL视为大仓库,关闭的时候有权限有身份都无法进入使用的时候要保持启用状态 方式一: 计算机游击找到“管理”打开 左侧栏目中找到“服务和应用程序”打开 打开服务 找到MySQL...,右击.... ...
- ModuleNotFoundError: No module named 'numpy.testing.nosetester'
- 问题解决:局域网内,为啥别人ping不到我的IP
试着在本地搭建一个测试环境,成功后却发现同一局域网的同事根本访问不了,他们ping不到我的IP,这可咋整! 询问度娘后,我的问题得到了,以下是我的总结,如果解决不了你的问题,还请继续百度. 方法一:关 ...