[HDU 4417] Super Mario (树状数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4417
题目大意:给你n个数,下标为0到n-1,m个查询,问查询区间[l,r]之间小于等于x的数有多少个。
写的时候逗比了。。。还是写的太少了。。
我们按照x从小到大排序来查询,然后找区间上的点,如果小于等于它就插入,然后看这个区间内插入了多少个点。
点也是可以排序的。。
详见代码:
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <vector>
using namespace std;
typedef pair<int,int> PII; const int MAX_N = ;
int bit[MAX_N];
PII a[MAX_N];
int ans[MAX_N];
struct Node{
int ql,qr,qh,idx;
bool operator<(const Node& a) const{
return qh<a.qh;
}
};
Node qq[MAX_N];
int T,n,m;
int ub; void add(int i,int x){
while( i<=n ){
bit[i] += x;
i+=i&-i;
}
} int sum(int i){
int res = ;
while( i> ){
res += bit[i];
i -= i&-i;
}
return res;
} int main(){
scanf("%d",&T);
int kase = ;
while( T-- ){
memset(bit,,sizeof(bit));
printf("Case %d:\n",kase++);
scanf("%d%d",&n,&m);
int ptr = ;
for(int i=;i<n;i++){
scanf("%d",&a[i].first);
a[i].second = i+;
}
for(int i=;i<m;i++){
scanf("%d%d%d",&qq[i].ql,&qq[i].qr,&qq[i].qh);
qq[i].idx = i;
} sort(qq,qq+m);
sort(a,a+n); int j=;
for(int i=;i<m;i++){
while(j<n && a[j].first<=qq[i].qh ){
add(a[j].second,);
j++;
}
ans[qq[i].idx] = sum( qq[i].qr+ ) - sum(qq[i].ql);
} for(int i=;i<m;i++){
printf("%d\n",ans[i]);
} }
return ;
}
[HDU 4417] Super Mario (树状数组)的更多相关文章
- hdu 4417 Super Mario 树状数组||主席树
Super Mario Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Prob ...
- Super Mario 树状数组离线 || 线段树
Super Mario Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- hdu-4417 Super Mario(树状数组 + 划分树)
题目链接: Super Mario Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- hdu4417 Super Mario (树状数组/分块/主席树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4417 题目大意:给定一个长度为n的序列,有m个询问,每次询问包含l,r,h,即询问区间[l,r]小于等 ...
- ACM学习历程—HDU4417 Super Mario(树状数组 && 离线)
Problem Description Mario is world-famous plumber. His “burly” figure and amazing jumping ability re ...
- hdu 4417 Super Mario/树套树
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4417 题意很简单,给定一个序列求一个区间 [L, R,]中小于等于H的元素的个数. 好像函数式线段树可 ...
- HDU 4417 - Super Mario ( 划分树+二分 / 树状数组+离线处理+离散化)
题意:给一个数组,每次询问输出在区间[L,R]之间小于H的数字的个数. 此题可以使用划分树在线解决. 划分树可以快速查询区间第K小个数字.逆向思考,判断小于H的最大的一个数字是区间第几小数,即是答案. ...
- HDU 4417 Super Mario ( 离线树状数组 )
把数值和查询放在一起从小到大排序,纪录每个数值的位置,当遇到数值时就更新到树状数组中,遇到查询就直接查询该区间和. #include <cstdio> #include <cstri ...
- HDU 4417 Super Mario(划分树)
Super Mario Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
随机推荐
- ASP.NET MVC3在页面上获取当前控制器名称、Action名称以及路由参数
参考:http://ulfqbpl.blog.163.com/blog/static/87783552201272824843607/ 获取控制器名称: RouteData.Values[" ...
- Android Studio--学习系列(1)
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="ht ...
- 【mybaits】Mybatis中模糊查询的各种写法
工作中用到,写三种用法吧,第四种为大小写匹配查询 1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('%', #{t ...
- html中间块居中宽度自适应
说来,这个其实不是个多难的事情,但是,若没有经验或者没有了解过html原数在浏览器中显示的顺序,可能还真是个问题,不知如何调整. 先说明下,在确定了左右两边显示的块的宽度后,再让中间块的宽度自适应,这 ...
- Android 打包签名 从生成keystore到完成签名 -- 转
首先,我们需要一个keystore,当然已经有了的话就不用这一步了:cmd下:进入到jdk的bin目录,这样的话,android.keystore文件就会生成在这个目录下,签名的时候我们需要这个文件C ...
- Hibernate 抓取策略fetch-1 (select join subselect)
原文 :http://4045060.blog.51cto.com/4035060/1088025 部分参考:http://www.cnblogs.com/rongxh7/archive/2010/0 ...
- Struts2 - Rest(2)
(上篇:Struts2 - Rest(1)) 6) 加入user-index.jsp到/WEB-INF/content中: <%@ page language="java" ...
- CPU GPU天梯图
2014年2月
- 通过xib创建View
1 创建一个xib并使之与一个自定义的View相关联 2 在自定义的View中参考如下代码: - (id)initWithFrame:(CGRect)frame { self = [super ini ...
- protobuffer序列化
一. 描述对象的proto文件 第一行package:对象经过protobuffer编译后形成java文件,这个文件放在按照package新建的文件夹内 java_package:java类的包名 j ...