莫队+树状数组

#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. Spring 框架的优点及缺点

    首先Spring 是一个框架,使用Spring并不代表代码质量的提高,就像盖房子选择用上海的地皮还是北京的地皮一样,房子质量与土地所在的城市无关,与房子的具体设计方案和选料有关. 使用Spring 等 ...

  2. 用Socket编写的聊天小程序

    Socket是什么? 是套接字,除此之外我也不太清楚,先略过 直接上实例,首先服务端: ; //自定义端口号 private string ServerUser = "Tracy" ...

  3. DHCP的主要知识点

    首先,先写一遍配置 好几种安装方式,我这里用的最简单的yum源安装: mkdir /mnt/cdrom mount -r /dev/sr0 /mnt/cdrom       ##创建挂载点 vim / ...

  4. jsp文件放在webcontent子目录下提交表单给servlet报404错误解决办法

    新版的web项目已经不需要配置web.xml了,并且eclipse neon版本里面新建web项目时候,默认不会生成web.xml文件.我们也不需要手动添加该文件,因为内部为我们提供了最新的处理方式, ...

  5. 【也许CTO并不是终点开篇】CTO也只不过是CTO罢了

    不想做将军的士兵不是好士兵,这句话可以有很功利的理解方式,对应到我们自己很可能是:不想做CTO的程序员不是好程序员!几年前对这句话的理解与现在有很多不同,因为我现在已经是一名中小型公司的CTO了,这句 ...

  6. java之jsp实现动态网页

    动态页面,说白了,就是根据一定的信息(条件)去改变呈现给用户的内容. 而这里所提到的一定的信息,通常就是指,在一个表单中用户所输入的信息. 先来看一个我们常见的用户登录界面吧. 在这里我们可以看到一共 ...

  7. Java的精确整数计算-Bigdecimal学习总结和工具类

    随笔:随着最近工作需要,回首需要涉及到一些精确的数据计算,就需要用到Bigdecimal,索性就趁着闲暇之余整理收集一下关于Bigdecimal的使用方法,由于时间的原因,整理的并不是特别详细,但相信 ...

  8. [ Java面试题 ] 框架篇

    1.谈谈你对Struts的理解. 1. struts是一个按MVC模式设计的Web层框架,其实它就是一个Servlet,这个Servlet名为ActionServlet,或是ActionServlet ...

  9. System.Drawing.image 与ImageSource 互转

    private BitmapSource bs(Bitmap bt) { IntPtr ip = bt.GetHbitmap(); BitmapSource bitmapSource = System ...

  10. (ospf、rip、isis、EIGRP)常见的动态路由协议简介

    路由器要转发数据必须先配置路由数据,通常根据网络规模的大小可设置静态路由或设置动态路由.静态路由配置方便,对系统要求低,适用于拓扑结构简单并且稳定的小型网络.缺点是不能自动适应网络拓扑的变化,需要人工 ...