[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 ...
随机推荐
- Send an email with format which is stored in a word document
1. Add a dll reference: Microsoft.Office.Interop.Word.dll 2. Add the following usings using Word = M ...
- N天前涨停过的票
zd(0,300,10)B2:=REF(C,1)*1.1-C;B3:BARSLAST(B2<0.01)=ZD01;{n天前涨停股票}
- 程序员书单_java专项进阶篇
JDBC API数据库编程实作教材 http://download.csdn.net/detail/shenzhq1980/9145715 Java事务设计模式 http://download.csd ...
- web api 500 错误
改了API 方法内容后,就直接F5运行起来. 客户端用WebClient请求,老是返回500错误. 无意中重新编译了WEIAPI项目,客户端就正常了.
- 更改AD查询LDAP条目的1000限制
解除LDAP导入时的AD条目查询限制 解除LDAP导入或读取AD用户数限制问题 更改AD查询LDAP条目的1000限制 来源:http://www.jiancool.com/article/55373 ...
- 【maven】将jar安装到maven本地仓库
Maven 安装 JAR 包的命令是: mvn install:install-file -Dfile=jar包的位置 -DgroupId=上面的groupId -DartifactId=上面的ar ...
- autotool相关:AC_ARG_ENABLE的用法
你可以使用AC_ARG_ENABLE来定义一个命令行选项.这个宏接受三个参数1.flag_base2.该选项的帮助说明3.当configure带该选项运行时所执行的代码,代码中的命令行变量enable ...
- PLSQL_基础系列12_替换函数用法REPLACE / TRANSLATE / REGEXP_REPLACE
20150806 Created By BaoXinjian
- PLSQL_基础系列08_操作符标LPAD / TRUNC / DECODE / TRIM / INSTR(案例)
2014-12-09 Created By BaoXinjian
- RMAN_Oracle RMAN的常用Command命令
2014-12-11 Created By BaoXinjian