传送门

又是一道主席树模板题,注意数组从0开始,还有主席树耗费空间很大,数组开大点,之前开小了莫名其妙TLE。QAQ

——代码

 #include <cstdio>
#include <cstring>
#include <algorithm>
#define ls son[now][0], l, mid
#define rs son[now][1], mid + 1, r using namespace std; const int N = ; int T, n, m, sz, tot, ans;
int a[N], b[N], rt[N], son[ * N][], sum[ * N]; inline void build(int &now, int l, int r)
{
now = ++tot;
sum[now] = ;
if(l == r) return;
int mid = (l + r) >> ;
build(ls);
build(rs);
} inline void update(int &now, int l, int r, int last, int x)
{
now = ++tot;
son[now][] = son[last][];
son[now][] = son[last][];
sum[now] = sum[last] + ;
if(l == r) return;
int mid = (l + r) >> ;
if(x <= mid) update(ls, son[now][], x);
else update(rs, son[now][], x);
} inline void query(int s, int t, int l, int r, int x)
{
if(l == r)
{
ans += sum[t] - sum[s];
return;
}
int mid = (l + r) >> ;
if(x <= mid) query(son[s][], son[t][], l, mid, x);
else
{
ans += sum[son[t][]] - sum[son[s][]];
query(son[s][], son[t][], mid + , r, x);
}
} inline void clear()
{
n = m = sz = tot = ;
memset(a, , sizeof(a));
memset(b, , sizeof(b));
memset(sum, , sizeof(sum));
memset(son, , sizeof(son));
memset(rt, , sizeof(rt));
} int main()
{
int i, j = , k, x, y, z;
scanf("%d", &T);
while(T--)
{
scanf("%d %d", &n, &m);
for(i = ; i <= n; i++) scanf("%d", &a[i]), b[i] = a[i];
sort(b, b + n + );
sz = unique(b + , b + n + ) - (b + );
tot = ;
build(rt[], , sz);
for(i = ; i <= n; i++)
{
k = lower_bound(b + , b + sz + , a[i]) - b;
update(rt[i], , sz, rt[i - ], k);
}
printf("Case %d:\n", ++j);
for(i = ; i <= m; i++)
{
scanf("%d %d %d", &x, &y, &z);
k = upper_bound(b + , b + sz + , z) - b - ;
if(k)
{
ans = ;
query(rt[x], rt[y + ], , sz, k);
printf("%d\n", ans);
}
else printf("0\n");
}
}
return ;
}

[HDU4417]Super Mario(主席树+离散化)的更多相关文章

  1. HDU4417 - Super Mario(主席树)

    题目大意 给定一个数列,每次要求你查询区间[L,R]内不超过K的数的数量 题解 和静态的区间第K大差不多,这题是<=K,先建立好n颗主席树,然后用第R颗主席树区间[1,K]内数的数量减去第L-1 ...

  2. HDU 4417 Super Mario 主席树

    分析:找一个区间里小于等于h的数量,然后这个题先离散化一下,很简单 然后我写这个题主要是熟悉一下主席树,其实这个题完全可以离线做,很简单 但是学了主席树以后,我发现,在线做,一样简单,而且不需要思考 ...

  3. HDU-4417 Super Mario,划分树+二分!

    Super Mario 这个题也做了一天,思路是很清晰,不过二分那里写残了,然后又是无限RE.. 题意:就是查询区间不大于k的数的个数. 思路:裸划分树+二分答案.将区间长度作为二分范围.这个是重点. ...

  4. HDU 4417 Super Mario 主席树查询区间小于某个值的个数

    #include<iostream> #include<string.h> #include<algorithm> #include<stdio.h> ...

  5. hdu4417 Super Mario (树状数组/分块/主席树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4417 题目大意:给定一个长度为n的序列,有m个询问,每次询问包含l,r,h,即询问区间[l,r]小于等 ...

  6. hdu4417 Super Mario 树阵离线/划分树

    http://acm.hdu.edu.cn/showproblem.php?pid=4417 Super Mario Time Limit: 2000/1000 MS (Java/Others)    ...

  7. hdu-4417 Super Mario(树状数组 + 划分树)

    题目链接: Super Mario Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 32768/32768 K (Java/Other ...

  8. hdu4417 Super Mario

    Problem Description Mario is world-famous plumber. His “burly” figure and amazing jumping ability re ...

  9. hdu_4417_Super Mario(主席树)

    题目链接:hdu_4417_Super Mario 题意: 给你n个树,有m个询问,每个询问有一个区间和一个k,问你这个区间内不大于k的数有多少个. 题解: 考虑用主席树的话就比较裸,当然也可以用其他 ...

随机推荐

  1. qconshanghai2015

    http://2015.qconshanghai.com/schedule 大会日程 2015年10月15日 星期四 08:30 开场致辞   地点 光大宴会厅 专题 主题演讲 数据分析与移动开发工具 ...

  2. P3717 [AHOI2017初中组]cover

    题目背景 以下为不影响题意的简化版题目. 题目描述 一个n*n的网格图上有m个探测器,每个探测器有个探测半径r,问这n*n个点中有多少个点能被探测到. 输入输出格式 输入格式: 第一行3个整数n,m, ...

  3. ABP教程(四)- 开始一个简单的任务管理系统 - 实现UI端的增删改查

    接上一篇:ABP教程(三)- 开始一个简单的任务管理系统 – 后端编码 1.实现UI端的增删改查 1.1添加增删改查代码 打开SimpleTaskSystem.sln解决方案,添加一个“包含视图的MV ...

  4. Elasticsearch (1) - 索引库 文档 分词

    创建索引库 ES的索引库是一个逻辑概念,它包括了分词列表及文档列表,同一个索引库中存储了相同类型的文档.它就相当于MySQL中的表,或相当于Mongodb中的集合. 关于索引这个语: 索引(名词):E ...

  5. ES6学习笔记(9)----Symbol

    参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ Symbol1.symbol:Symbol是javascript的第七种原始数据类型,代表独一无 ...

  6. Eclipse 闪退/无法启动/一闪而过打解决办法

    解决方法 删除文件:/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi 经过实际应用真实有效.

  7. innerHTML引起IE的内存泄漏

      内存泄漏常见的原因有三种: 1. 闭包 2. 未解除事件绑定 3. 循环引用DOM元素 除此之外,还有一种泄漏原因少有人知,它和innerHTML有关,不过很容易解决. 出现这种内存泄漏需要有三个 ...

  8. gulp自动化构建工具使用

    gulpfile.js: var gulp = require("gulp"); var imagemin = require("gulp-imagemin") ...

  9. dropuser - 删除一个 PostgreSQL 用户帐户

    SYNOPSIS dropuser [ option...] [ username] DESCRIPTION 描述 dropuser 删除一个现有 PostgreSQL 用户 和 该用户所有的数据库. ...

  10. Windows API函数大全(完整)

    Windows API函数大全,从事软件开发的朋友可以参考下 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一 ...