[HDU4417]Super Mario(主席树+离散化)
又是一道主席树模板题,注意数组从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(主席树+离散化)的更多相关文章
- HDU4417 - Super Mario(主席树)
题目大意 给定一个数列,每次要求你查询区间[L,R]内不超过K的数的数量 题解 和静态的区间第K大差不多,这题是<=K,先建立好n颗主席树,然后用第R颗主席树区间[1,K]内数的数量减去第L-1 ...
- HDU 4417 Super Mario 主席树
分析:找一个区间里小于等于h的数量,然后这个题先离散化一下,很简单 然后我写这个题主要是熟悉一下主席树,其实这个题完全可以离线做,很简单 但是学了主席树以后,我发现,在线做,一样简单,而且不需要思考 ...
- HDU-4417 Super Mario,划分树+二分!
Super Mario 这个题也做了一天,思路是很清晰,不过二分那里写残了,然后又是无限RE.. 题意:就是查询区间不大于k的数的个数. 思路:裸划分树+二分答案.将区间长度作为二分范围.这个是重点. ...
- HDU 4417 Super Mario 主席树查询区间小于某个值的个数
#include<iostream> #include<string.h> #include<algorithm> #include<stdio.h> ...
- hdu4417 Super Mario (树状数组/分块/主席树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4417 题目大意:给定一个长度为n的序列,有m个询问,每次询问包含l,r,h,即询问区间[l,r]小于等 ...
- hdu4417 Super Mario 树阵离线/划分树
http://acm.hdu.edu.cn/showproblem.php?pid=4417 Super Mario Time Limit: 2000/1000 MS (Java/Others) ...
- hdu-4417 Super Mario(树状数组 + 划分树)
题目链接: Super Mario Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- hdu4417 Super Mario
Problem Description Mario is world-famous plumber. His “burly” figure and amazing jumping ability re ...
- hdu_4417_Super Mario(主席树)
题目链接:hdu_4417_Super Mario 题意: 给你n个树,有m个询问,每个询问有一个区间和一个k,问你这个区间内不大于k的数有多少个. 题解: 考虑用主席树的话就比较裸,当然也可以用其他 ...
随机推荐
- jquery 根据文内内容获取dom
$("table tr td:contains(5)")
- ionic back 返回按钮不正常显示&&二级路由点击返回按钮失效无法返回到上一级页面的问题
很多时候,app不只有一两级路由,还要三四级路由,但是在ionic中,给出的返回键三级或四级无法使用,所以得自定义方法设置返回. 直接贴代码: <ion-nav-buttons side=&qu ...
- re正则表达式讲解—初步认识
# f = open(r"C:\Users\LENOVO\Desktop\模特.txt",'r') # 1.常规提取文档内容方法 # contacts = [] # for i i ...
- 解决./mysql-bin.index’ not found (Errcode: 13)
问题出现在升级php版本以后,网站无法连接数据库,phpMyAdmin无法登录: 然后尝试开启mysql,/etc/init.d/mysqld start ,提示: Starting MySQL. E ...
- Summary of 2016 International Trusted Computing and Cloud Security Summit
1) Welcome Remarks 2) The advancement of Cloud Computing and Tursted Computing national st ...
- 为什么ABAP整型的1转成string之后,后面会多个空格
有同事问这个问题:lv_s是从int4转过来的,长度为2,和硬编码的lv_s2(长度为1)相比,后面多了个空格. 为什么?查SAP ABAP的编程帮助F1 help. 帮助文档说的很清楚了:如果赋值操 ...
- idea创建和部署tomcat项目
小编今天花费了一上午,参悟出了如何快速的在idea上面创建并部署一个属于自己的maven项目,很荣幸能将自己的开发经验推而广之,希望能够帮助到大家! 前言 小编参考博文: Intellij Idea ...
- 指针-动态开点&合并线段树
一个知识点不在一道题里说是没有灵魂的 线段树是用来处理区间信息的咯 但是往往因为需要4倍空间让许多人退却,而动态开点的线段树就非常棒 仿佛只用2倍就可以咯 指针保存位置,即节点信息,是很舒适的,所以用 ...
- SQL分组聚合查询练习(SQL Server和Oracle相似)20190514
先建表 CREATE TABLE [dbo].[orderdt_jimmy]( ,) NOT NULL, [order_nid] [int] NOT NULL, ) NOT NULL, [qty] [ ...
- Gear Pump: Why Install A Pressure Reducing Valve?
When the Gear Pump Manufacturers prompts to install a gear pump, the following points should ...