莫队+树状数组

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#define N 100055
#define M 1000066
using namespace std;
int gy[N],be[N],c[M],cc[M],n,m,nn,maxn,tot,num[N];
struct Query{
int l,r,a,b,id,ans1,ans2;
}qr[M];
bool cmp1(Query a,Query b){
if(be[a.l]==be[b.l])
return a.r<b.r;
return be[a.l]<be[b.l];
}
bool cmp2(Query a,Query b){
return a.id<b.id;
}
int lowbit(int x){
return x&(-x);
}
void add(int x,int y){
int xx=x;
if(y==1&&++num[xx]==1){
while(xx<=maxn){
cc[xx]++;
xx+=lowbit(xx);
}
}
if(y==-1&&--num[xx]==0){
while(xx<=maxn){
cc[xx]--;
xx+=lowbit(xx);
}
}
while(x<=maxn){
c[x]+=y;
x+=lowbit(x);
}
}
int query(int x){
if(x>maxn) x=maxn;
int ans=0;
while(x){
ans+=c[x];
x-=lowbit(x);
}
return ans;
}
int query1(int x){
if(x>maxn) x=maxn;
int ans=0;
while(x){
ans+=cc[x];
x-=lowbit(x);
}
return ans;
}
void work(){
int l=1,r=0;tot=0;
for(int i=1;i<=m;i++){
while(l<qr[i].l) add(gy[l++],-1);
while(l>qr[i].l) add(gy[--l],1);
while(r<qr[i].r) add(gy[++r],1);
while(r>qr[i].r) add(gy[r--],-1);
qr[i].ans1=query(qr[i].b)-query(qr[i].a-1);
qr[i].ans2=query1(qr[i].b)-query1(qr[i].a-1);
}
}
int main()
{
scanf("%d%d",&n,&m); nn=(int)sqrt(n);
for(int i=1;i<=n;i++){
scanf("%d",&gy[i]);
be[i]=(i-1)/nn+1;
maxn=max(maxn,gy[i]);
}
int l,r,a,b;
for(int i=1;i<=m;i++){
scanf("%d%d%d%d",&l,&r,&a,&b);
qr[i].l=l; qr[i].r=r;
qr[i].a=a; qr[i].b=b;
qr[i].id=i;
}
sort(qr+1,qr+m+1,cmp1);
work();
sort(qr+1,qr+m+1,cmp2);
for(int i=1;i<=m;i++)
printf("%d %d\n",qr[i].ans1,qr[i].ans2);
return 0;
}

bzoj3236 作业 莫队+树状数组的更多相关文章

  1. BZOJ3236[Ahoi2013]作业——莫队+树状数组/莫队+分块

    题目描述 输入 输出 样例输入 3 4 1 2 2 1 2 1 3 1 2 1 1 1 3 1 3 2 3 2 3 样例输出 2 2 1 1 3 2 2 1 提示 N=100000,M=1000000 ...

  2. COGS.1822.[AHOI2013]作业(莫队 树状数组/分块)

    题目链接: COGS.BZOJ3236 Upd: 树状数组实现的是单点加 区间求和,采用值域分块可以\(O(1)\)修改\(O(sqrt(n))\)查询.同BZOJ3809. 莫队为\(O(n^{1. ...

  3. BZOJ 3236: [Ahoi2013]作业(莫队+树状数组)

    传送门 解题思路 莫队+树状数组.把求\([a,b]\)搞成前缀和形式,剩下的比较裸吧,用\(cnt\)记一下数字出现次数.时间复杂度\(O(msqrt(n)log(n)\),莫名其妙过了. 代码 # ...

  4. BZOJ 3236 AHOI 2013 作业 莫队+树状数组

    BZOJ 3236 AHOI 2013 作业 内存限制:512 MiB 时间限制:10000 ms 标准输入输出     题目类型:传统 评测方式:文本比较 题目大意: 此时己是凌晨两点,刚刚做了Co ...

  5. [AHOI2013]作业 莫队 树状数组

    #include<cmath> #include<cstdio> #include<algorithm> #include<string> #inclu ...

  6. BZOJ_3289_Mato的文件管理_莫队+树状数组

    BZOJ_3289_Mato的文件管理_莫队+树状数组 Description Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号 .为了防止他人 ...

  7. bzoj 3289: Mato的文件管理 莫队+树状数组

    3289: Mato的文件管理 Time Limit: 40 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description Mato同学 ...

  8. 51nod 1290 Counting Diff Pairs | 莫队 树状数组

    51nod 1290 Counting Diff Pairs | 莫队 树状数组 题面 一个长度为N的正整数数组A,给出一个数K以及Q个查询,每个查询包含2个数l和r,对于每个查询输出从A[i]到A[ ...

  9. 【BZOJ3460】Jc的宿舍(树上莫队+树状数组)

    点此看题面 大致题意: 一棵树,每个节点有一个人,他打水需要\(T_i\)的时间,每次询问两点之间所有人去打水的最小等待时间. 伪·强制在线 这题看似强制在线,但实际上,\(pre\ mod\ 2\) ...

随机推荐

  1. 百度编辑器上传视频音频的bug

    前言:UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码,百度Ueditor 支持多种后台语言上传 ...

  2. 怎样看Mac的日志

    Mac自带的日志查看工具Console,注意Console和Terminal不是一码事,后者是CLI环境,前者是GUI日志查看工具.在应用里面搜索Console即可找到,里面的界面和Windows的日 ...

  3. iphone连接电脑itunes之后 C盘突然小很多被占了很多空间

    很有可能是你的iTunes开启了自动备份,把iphone上的数据都备份到了电脑上,而默认目录就是在C盘.我们可以找到并删除它,换C盘一个清白. 我的路径参考如下: C:\Users\scc\AppDa ...

  4. es6(五):class关键字(extends,super,static)

    ES5中,生成对象通过构造函数: function A(name,age){ this.name=name; this.age=age } // 在A的prototype属性上定义一个test方法,即 ...

  5. SharePoint2013 功能区的配置

    遇到了很多次对网站功能区个性化定义的任务,包括标签按钮之类的修改,每次都要重新翻书,这次总结一下,留作备用. 添加内容 下面的XML我认为主要的内容是四部分,一个是CommandUIDefinitio ...

  6. Spring Aop技术原理分析

    本篇文章从Aop xml元素的解析开始,分析了Aop在Spring中所使用到的技术.包括Aop各元素在容器中的表示方式.Aop自动代理的技术.代理对象的生成及Aop拦截链的调用等等.将这些技术串联起来 ...

  7. ES6 中的 iterator

    [简介] 遍历器/迭代器.任何数据结构只要部署 Iterator 接口,就可以完成遍历操作.这种数据结构是“可遍历的”(iterable). 如何判断是否可遍历? typeof target[Symb ...

  8. SIMATIC_STEP_V5.6使用报错

    SIMATIC_STEP_V5.6是西门子出来的一款能够在Windows 10上运行的step 7软件. 正常的安装步骤我们可以在百度上面进行一些查找,在这里我将我遇到的一个问题发出来. 在Windo ...

  9. SSM-MyBatis-08:Mybatis中SqlSession的commit方法为什么会造成事物的提交

      ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 如题目所示,本小章节讨论为什么SqlSession的commit会造成事物的提交 首先先看SqlSessi ...

  10. Linux内核中的算法和数据结构

    算法和数据结构纷繁复杂,但是对于Linux Kernel开发人员来说重点了解Linux内核中使用到的算法和数据结构很有必要. 在一个国外问答平台stackexchange.com的Theoretica ...