这东西是个应用为O(logn)的莫队。

正常莫队的updata函数转移是O(1)的,可这个题时间非常宽泛,可以套两个树状数组,那两个东西很好维护,第一个直接普通权值树状数组维护,第二个开一个桶,记录当前区间内某个数的出现次数,当从0->1时,第二个树状数组+权,1->0时,第二个树状数组-权,别的情况不用管,这样就可以用莫队轻松搞掉了。

#include<bits/stdc++.h>
#define lowbit(x) (x&(-x))
using namespace std;
int read(){
int sum=,f=;char x=getchar();
while(x<''||x>''){
if(x=='-') f=-;
x=getchar();
}while(x>=''&&x<=''){
sum=sum*+x-'';
x=getchar();
}return sum*f;
}
struct MoCap{
int l,r,id,a,b;
}q[];
int n,m,part,L,R,ans1[],ans2[];
int bl[],col[],t1[],t2[],cnt[];
bool cmp(MoCap a,MoCap b){
return bl[a.l]==bl[b.l]?a.r<b.r:a.l<b.l;
}
void add1(int pos,int val){
for(int i=pos;i<=n;i+=lowbit(i))
t1[i]+=val;
}
int ask1(int pos){
int ans=;
for(int i=pos;i>=;i-=lowbit(i))
ans+=t1[i];
return ans;
}
void add2(int pos,int val){
for(int i=pos;i<=n;i+=lowbit(i))
t2[i]+=val;
}
int ask2(int pos){
int ans=;
for(int i=pos;i>=;i-=lowbit(i))
ans+=t2[i];
return ans;
}
void updata(int i,int val){
if(cnt[col[i]]==&&val==-){
add2(col[i],val);
}
if(cnt[col[i]]==&&val==){
add2(col[i],val);
}
add1(col[i],val);
cnt[col[i]]+=val;
// qaq1=ask1(R)-ask1(L-1);
// qaq2=ask2(R)-ask2(L-1);
}
int main(){
n=read();m=read();part=sqrt(n);
for(int i=;i<=n;i++){
col[i]=read();
bl[i]=i/part+;
}
for(int i=;i<=m;i++){
q[i].l=read();
q[i].r=read();
q[i].a=read();
q[i].b=read();
q[i].id=i;
}sort(q+,q++m,cmp);
int l=,r=;
for(int i=;i<=m;i++){
L=q[i].a;R=q[i].b;
while(l<q[i].l) updata(l++,-);
while(l>q[i].l) updata(--l,+);
while(r<q[i].r) updata(++r,+);
while(r>q[i].r) updata(r--,-);
ans1[q[i].id]=ask1(R)-ask1(L-);
ans2[q[i].id]=ask2(R)-ask2(L-);
}
for(int i=;i<=m;i++)
printf("%d %d\n",ans1[i],ans2[i]);
return ;
}

BZOJ3236作业的更多相关文章

  1. bzoj3236 作业 莫队+树状数组

    莫队+树状数组 #include<cstdio> #include<cstring> #include<iostream> #include<algorith ...

  2. 莫队浅谈&题目讲解

    莫队浅谈&题目讲解 一.莫队的思想以及莫队的前置知识 莫队是一种离线的算法,他的实现借用了分块的思想.在学习莫队之前,本人建议学习一下分块,并对其有一定的理解. 二.莫队 现给出一道例题:bz ...

  3. BZOJ3236: [AHOI2013]作业

    BZOJ3236: [AHOI2013]作业 题目描述 传送门 行,我知道是Please contact lydsy2012@163.com! 传送门2 题目分析 这题两问还是非常,emmmm. 首先 ...

  4. [bzoj3809]Gty的二逼妹子序列/[bzoj3236][Ahoi2013]作业

    [bzoj3809]Gty的二逼妹子序列/[bzoj3236][Ahoi2013]作业 bzoj   bzoj 题目大意:一个序列,m个询问在$[l,r]$区间的$[x,y]$范围内的数的个数/种类. ...

  5. 【BZOJ3236】【AHOI2013】作业 线段树 分治 树状数组

    题目描述 给你一个长度为\(n\)的数列,还有\(m\)个询问,对于每个询问\((l,r,a,b)\),输出1.区间\([l,r]\)有多少范围在\([a,b]\)的数:2.区间\([l,r]\)有多 ...

  6. 【bzoj3809/bzoj3236】Gty的二逼妹子序列/[Ahoi2013]作业 莫队算法+分块

    原文地址:http://www.cnblogs.com/GXZlegend/p/6805252.html bzoj3809 题目描述 Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了 ...

  7. BZOJ3236 [Ahoi2013]作业 【莫队 + 树状数组】

    题目链接 BZOJ3236 题解 没想到这题真的是如此暴力 #include<algorithm> #include<iostream> #include<cstring ...

  8. 【洛谷4396/BZOJ3236】[AHOI2013]作业(莫队+分块/树状数组/线段树)

    题目: 洛谷4396 BZOJ3236(权限) 这题似乎BZOJ上数据强一些? 分析: 这题真的是--一言难尽 发现题面里没说权值的范围,怕出锅就写了离散化.后来经过面向数据编程(以及膜神犇代码)知道 ...

  9. [BZOJ3236]:[Ahoi2013]作业(莫队+分块)

    题目传送门 题目描述 此时已是凌晨两点,刚刚做了$Codeforces$的小$A$掏出了英语试卷.英语作业其实不算多,一个小时刚好可以做完.然后是一个小时可与做完的数学作业,接下来是分别都是一个小时可 ...

随机推荐

  1. c#的异步处理思路和vue前端中异步处理思路比较

    前语:目前工作在做的项目是前端基于vue的组件式开发,通过api接口调用,后端数据逻辑是一个c#实现的WCF服务 1.总结自己在c# .NET 4.5后的新异步方式  async搭配await来实现  ...

  2. vue进入页面时不在顶部,检测滚动返回顶部按钮

    这里是本小白使用时遇到的问题及个人使用的方法可能并不完美. 1.监测浏览器滚动条滚动事件及滚动距离 dmounted() { window.addEventListener("scroll& ...

  3. H5之拖拽

    步骤: 1.为将要拖拽的元素设置允许拖拽,并赋予dragstart事件将其id转换成数据保存: 2.为容器添加dragover属性添加事件阻止浏览器默认事件,允许元素放置,并赋予drop事件进行元素的 ...

  4. arm-none-eabi/bin/ld: build/com.zubax.gnss.elf section `.text' will not fit in region `flash'

    出现如下错误: /arm-none-eabi/bin/ld: build/com.zubax.gnss.elf section `.text' will not fit in region `flas ...

  5. 在pivotal cloud foundry上申请账号和部署应用

    Created by Wang, Jerry, last modified on Jul 04, 2016 URL: http://run.pivotal.io/ maintain your mobi ...

  6. jquery-weui滚动事件的注册与注销

    注册infinite(50)是自定义的,详细暂时没去了解,可以不写即代表默认值. // body是整一块代码的标签,也就是滚动的部分. $('body').infinite().on("in ...

  7. spark 机器学习 knn 代码实现(二)

    通过knn 算法规则,计算出s2表中的员工所属的类别原始数据:某公司工资表 s1(训练数据)格式:员工ID,员工类别,工作年限,月薪(K为单位)       101       a类       8年 ...

  8. Android 通过资源名,获取资源ID

    有时候我们知道一个图片的文件名,我们需要知道在R文件中,该资源的ID,使用如下方法: public static int getIdByName(Context context, String cla ...

  9. django 配置文件settings.py 设置模板

    INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'dj ...

  10. SSH与ansible 部署方法与核心模块简介

    SSH与ansible 部署方法 部署环境 管理服务器 172.16.1.61 NFS服务器 172.16.1.31 备份服务器 172.16.1.41 1检查SSH服务是否运行并开启服务 netst ...