#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;;
const int N=1e5+;
struct T {
int key;
int id;
};
struct ask {
int lr;
int hr;
int val;
int id;
};
T arr[N];
ask q[N];
int tree[N];
int ans [N];
int n,m;
bool cmp1 (T a,T b) {
return a.key<b.key;
}
bool cmp2 (ask a,ask b) {
return a.val<b.val;
}
void add (int x,int k) {
while (k<=n) {
tree[k]+=x;
k+=k&(-k);
}
}
int sum (int k) {
int _ans=;
while (k) {
_ans+=tree[k];
k-=k&(-k);
}
return _ans;
}
int main ()
{
int T;
scanf ("%d",&T);
int num=;
while (T--) {
printf("Case %d:\n",num++);
scanf ("%d %d",&n,&m);
for (int i=;i<=n;i++) {
scanf ("%d",&arr[i].key);
arr[i].id=i;
}
sort (arr+,arr++n,cmp1);
for (int i=;i<=m;i++) {
scanf ("%d %d %d",&q[i].lr,&q[i].hr,&q[i].val);
q[i].id=i;
}
sort (q+,q++m,cmp2);
memset (tree,,sizeof(tree));
int top=;
for (int i=;i<=m;i++) {
while (top<=n&&arr[top].key<=q[i].val) {
add(,arr[top].id);
top++;
}
ans[q[i].id]=sum(q[i].hr+)-sum(q[i].lr);
}
for (int i=;i<=m;i++)
printf("%d\n",ans[i]);
}
return ;
}

hdoj-4417(做法二 树状数组离线解法,对所有的查询先保存进行排序后有序的查询) 好腻害!的更多相关文章

  1. Necklace HDU - 3874 (线段树/树状数组 + 离线处理)

    Necklace HDU - 3874  Mery has a beautiful necklace. The necklace is made up of N magic balls. Each b ...

  2. HDU 3333 - Turing Tree (树状数组+离线处理+哈希+贪心)

    题意:给一个数组,每次查询输出区间内不重复数字的和. 这是3xian教主的题. 用前缀和的思想可以轻易求得区间的和,但是对于重复数字这点很难处理.在线很难下手,考虑离线处理. 将所有查询区间从右端点由 ...

  3. 2016 Multi-University Training Contest 5 1012 World is Exploding 树状数组+离线化

    http://acm.hdu.edu.cn/showproblem.php?pid=5792 1012 World is Exploding 题意:选四个数,满足a<b and A[a]< ...

  4. SPOJ DQUERY树状数组离线or主席树

    D-query Time Limit: 227MS   Memory Limit: 1572864KB   64bit IO Format: %lld & %llu Submit Status ...

  5. D-query SPOJ 树状数组+离线

    D-query SPOJ 树状数组+离线/莫队算法 题意 有一串正数,求一定区间中有多少个不同的数 解题思路--树状数组 说明一下,树状数组开始全部是零. 首先,我们存下所有需要查询的区间,然后根据右 ...

  6. HDOJ 4417 - Super Mario 线段树or树状数组离线处理..

    题意: 同上 题解: 抓着这题作死的搞~~是因为今天练习赛的一道题.SPOJ KQUERY.直到我用最后一种树状数组通过了HDOJ这题后..交SPOJ的才没超时..看排名...时间能排到11名了..有 ...

  7. HDU 4417 - Super Mario ( 划分树+二分 / 树状数组+离线处理+离散化)

    题意:给一个数组,每次询问输出在区间[L,R]之间小于H的数字的个数. 此题可以使用划分树在线解决. 划分树可以快速查询区间第K小个数字.逆向思考,判断小于H的最大的一个数字是区间第几小数,即是答案. ...

  8. HDU 4630 No Pain No Game 树状数组+离线查询

    思路参考 这里. #include <cstdio> #include <cstring> #include <cstdlib> #include <algo ...

  9. BZOJ 4999: This Problem Is Too Simple! DFS序+LCA+树状数组+离线

    Code: #include<bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) , ...

随机推荐

  1. 【资料收集】OpenCV入门指南 系列文章

    <OpenCV入门指南>系列文章地址:http://blog.csdn.net/morewindows/article/category/1291764 目录: 第一篇  安装OpenCV ...

  2. RabbitMQ direct类型的Exchange

    就目前来说,Exchange是与消息发送端有关的,因为它可以指定将消息发送到哪个或哪些队列中. 本篇文章介绍的direct类型就是指定将消息定向发送到哪个队列中. direct,顾名思义,就是直接的意 ...

  3. java IO实例

    import java.io.*; /** * Created by CLY on 2017/7/23. */ public class Main { public static void main( ...

  4. net core 获取网站目录

    AppContext.BaseDirectory 获取项目的根目录

  5. CreateThread和_beginthread区别及使用

    CreateThread 是一个Win 32API 函数, _beginthread 是一个CRT(C Run-Time)函数, 他们都是实现多线城的创建的函数,而且他们拥有相同的使用方法,相同的参数 ...

  6. 人生苦短,我用python,为什么选择python,python简介

    认识 Python 人生苦短,我用 Python —— Life is short, you need Python  目标 Python 的起源 为什么要用 Python? Python 的特点 ...

  7. Problem C: 默认参数:求圆面积

    Description 编写一个带默认值的函数,用于求圆面积.其原型为: double area(double r=1.0); 当调用函数时指定参数r,则求半径为r的圆的面积:否则求半径为1的圆面积. ...

  8. 前端select动态加载

    <select id ="ycode" cssclass="form-control selectpicker" name="ydljgId&q ...

  9. 字典树trie学习

    字典树trie的思想就是利用节点来记录单词,这样重复的单词可以很快速统计,单词也可以快速的索引.缺点是内存消耗大 http://blog.csdn.net/chenleixing/article/de ...

  10. 20165326 java第五周学习笔记

    第五周学习笔记 ch7 内部类(&外嵌类) 内部类的类体不可以声明类变量和方法 内部类如同类的变量或方法 内部类和外嵌类在编译时生成两个class文件 匿名类 某个类的一个子类没有明显的用类声 ...