/*题目大意:输入一序列n个数字,然后输入m个询问,每个询问包含左边区间和右边区间,还有a和b,问你这个区间内有几个数大于等于a且小于等于b
做法:树状数组,先求出这个区间内有几个数小于a,然后求这个区间内有几个数小于等于b,拿后者减去前者就是答案了*/
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxn=;
int c[maxn],ansl[maxn],ansr[maxn];
struct pp
{
int num;
int id;
}p[maxn];
struct p2p
{
int hi;
int id;
int l,r;
int low;
}p1[maxn];
int cmp(pp a,pp b)
{
return a.num<b.num;
}
int cmp1(p2p a,p2p b)
{
return a.low<b.low;
}
int cmp2(p2p a,p2p b)
{
return a.hi<b.hi;
}
int n,m;
int lowbit(int x)
{
return x&(-x);
}
void add(int x,int d)
{
while(x<=n)
{
c[x]+=d;
x=x+lowbit(x);
}
}
int sum(int x)
{
int ans=;
while(x>)
{
ans+=c[x];
x=x-lowbit(x);
}
return ans;
}
int main()
{
int i,j,k;
int t;
int cas=;
scanf("%d",&t);
while(t--)
{
memset(c,,sizeof(c));
memset(ansl,,sizeof(ansl));
scanf("%d%d",&n,&m);
for(i=;i<=n;i++)
{
scanf("%d",&p[i].num);
p[i].id=i;
}
for(i=;i<=m;i++)
{
scanf("%d%d%d%d",&p1[i].l,&p1[i].r,&p1[i].low,&p1[i].hi);
p1[i].id=i;
}
sort(p+,p+n+,cmp);
sort(p1+,p1+m+,cmp1);
i=;
j=;
while(j<=m)
{
while(i<=n)
{
if(p[i].num>=p1[j].low)
break;
add(p[i].id,);
i++;
}
while(j<=m)
{
if(i<=n&&p[i].num<p1[j].low)
break;
ansl[p1[j].id]=sum(p1[j].r)-sum(p1[j].l-);
j++;
}
}
i=;
j=;
memset(c,,sizeof(c));
memset(ansr,,sizeof(ansr));
sort(p1+,p1+m+,cmp2);
while(j<=m)
{
while(i<=n)
{
if(p[i].num>p1[j].hi)
break;
add(p[i].id,);
i++;
}
while(j<=m)
{
if(i<=n&&p[i].num<=p1[j].hi)
break;
ansr[p1[j].id]=sum(p1[j].r)-sum(p1[j].l-);
j++;
}
}
printf("Case #%d:\n",++cas);
for(i=;i<=m;i++)
if(ansr[i]-ansl[i]>)
printf("%d\n",ansr[i]-ansl[i]);
else printf("0\n");
}
return ;
}

SDUT oj 2610的更多相关文章

  1. SDUT OJ 2607

    /*http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2607*/ 题目大意:给出一个字符串,求出里 ...

  2. SDUT OJ 1221 亲和数 (找出某个数n所有的因子数,只需要暴力:2->sqrt(n) 即可 )

    亲和数 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 如果a的因子和等于b,b的因子和等于a,且a≠b,则称a,b为亲和数对. ...

  3. SDUT OJ 图练习-BFS-从起点到目标点的最短步数 (vector二维数组模拟邻接表+bfs , *【模板】 )

    图练习-BFS-从起点到目标点的最短步数 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 在古老的魔兽传说中,有两个军团,一个叫天 ...

  4. 【离散数学】 SDUT OJ 传递闭包 && memset 使用注意事项

    传递闭包 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 已知有n头牛,m次战斗关系, ...

  5. SDUT OJ 2783 小P寻宝记

    #include<iostream> #include<memory.h> #define N 10020 using namespace std; int dp[N],pi[ ...

  6. SDUT oj 3005 打怪升级(内存搜索)

    当比赛一直纠缠骑2如何做一个非常大的数量,数组不开啊...后来他们发现自己很傻啊,该数不超过最大10什么,这个上限就是力量100什么.. .. 其它的就是记忆化搜索啊,还有就是加一点力量的瓶子当时就要 ...

  7. SDUT OJ 2463 学校password你必须学会科学计划

    #include<iostream> #include<string.h> #include<stdio.h> #define N 10010 #define M ...

  8. SDUT OJ 效率至上(线段树)

    效率至上 Time Limit: 5000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 题意很简单,给出一个数目为n ...

  9. SDUT OJ 数组计算机(线段树)

    学长推荐了这个博客详细的介绍了线段树的建立.查找.更新: 数组计算机 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Prob ...

随机推荐

  1. CreateRemoteThreadex开启远程线程失败集合

    修改进程PE头 报错 修改进程_EPROCESS +0x12c SectionBaseAddress : 0x00bf0000 都会报错 不是有效的win32程序 错误号193 修改进程PEB +0x ...

  2. spring could Windows打包构建docker镜像到linux

    工程模拟参考:http://blog.csdn.net/forezp/article/details/70198649 一.工程结构 二.Pom配置 <build> <plugins ...

  3. node 事件监听器

    创建文件events.js,依次写入下列代码: 事件模块引入与实例化监听器 // 引入事件模块 var e = require('events'); // 实例化事件监听 var emitter = ...

  4. Code Forces 26C Dijkstra?

    C. Dijkstra? time limit per test 1 second memory limit per test 64 megabytes input standard input ou ...

  5. [linux基础学习]默认的目录介绍

    以下用一个表格来罗列linux默认的目录或文件及其用途: 目录/文件 用途 来源 / /处于Linux文件系统树形结构的最顶端,它是Linux文件系统的入口,所有的目录.文件.设备都在/之下. - / ...

  6. 隐藏UITableView当没有数据或数据不够的时候出现的分割线.

    在没有分割先的情况下,添加如下方法,当实例化tableview的时候调用该方法. - (void)setExtraCellLineHidden: (UITableView *)tableView{ U ...

  7. jmeter常见参数 vars、prev、ctx 、props 类的api

    ctx - ( JMeterContext) - gives access to the context vars - ( JMeterVariables) - gives read/write ac ...

  8. 原!linux脚本统计

    #! /bin/sh first=$ first2=$ input2=$ let second=`date -d "-1 days ago ${input2}" +%Y%m%d` ...

  9. Ubuntu 12.04安装Google Chrome(转)

    下载google chrome deb包,下载地址:https://www.google.com/chrome/browser/desktop/index.html,google的网站被墙了,如果你下 ...

  10. 007-mac快捷键

    锁屏:Ctrl + Command + Q touch-bar:方法:“系统偏好设置”>“键盘”>“自定Control Strip…”,将“锁定屏幕”图标拖拽到Touch Bar上即可.] ...