/*题目大意:输入一序列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 ;
}

最新文章

  1. I.MX6 initramfs.cpio.gz.uboot unpack
  2. TCP/IP详解 笔记十
  3. Spring MVC程序中得到静态资源文件css,js,图片
  4. SQL Server如何截断(Truncate)和收缩(Shrink)事务日志
  5. 1020: [SHOI2008]安全的航线flight - BZOJ
  6. Cocos2d-x滚动列表具体解释(CCScrollView的使用)
  7. python课程第一天作业1-模拟登录
  8. Visual Studio使用正则表达式快速统计总共代码行数
  9. Linux查询系统配置常用命令
  10. nodejs querystring踩坑笔记----只能用于表单提交
  11. 201521123101 《Java程序设计》第5周学习总结
  12. 一、TensorFlow的简介和安装和一些基本概念
  13. 第56章 Client - Identity Server 4 中文文档(v1.0.0)
  14. HAProxy负载均衡技术
  15. 如何在python脚本下启动django程序
  16. JAVA使用POI如何导出百万级别数据(转)
  17. Java-关于Thread
  18. Python3数据类型及转换
  19. 吴恩达课后作业学习2-week1-2正则化
  20. Java里数组的三种初始化方式

热门文章

  1. js功能实现的特效--距离新年还有多少天
  2. Java+selenium+Fitnesse
  3. 云计算之路-阿里云上:对“黑色n秒”问题的最终猜想——CPU C-states引起的
  4. 升级PHP版本导致zabbix无法访问解决办法
  5. servlet容器与web容器的概念
  6. kubernetes使用中遇到的坑
  7. 伪造堆块绕过unlink检查(ctf-QiangWangCup-2015-shellman)
  8. ubuntu14下创建软件的快捷启动方式
  9. Service Receiver Activity 之间的通信
  10. linux 实用命令