3236

思路:

  莫队+树状数组维护;

代码:

#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; #define maxn 100005 struct QueryType {
int l,r,a,b,id;
};
struct QueryType qu[maxn*]; int n,sum[maxn],sum_[maxn],ti[maxn],ans[maxn*][];
int ai[maxn],size,bel[maxn],m; inline void in(int &now)
{
char Cget=getchar();now=;
while(Cget>''||Cget<'') Cget=getchar();
while(Cget>=''&&Cget<='')
{
now=now*+Cget-'';
Cget=getchar();
}
} inline int lowbit(int x)
{
return x&(-x);
} inline void sadd(int x,int k)
{
while(x<=n) sum[x]+=k,x+=lowbit(x);
} inline int ssum(int p,int x)
{
int res=;p--;
while(x) res+=sum[x],x-=lowbit(x);
while(p) res-=sum[p],p-=lowbit(p);
return res;
} inline void tadd(int x,int k)
{
while(x<=n) sum_[x]+=k,x+=lowbit(x);
} inline int tsum(int p,int x)
{
int res=;p--;
while(x) res+=sum_[x],x-=lowbit(x);
while(p) res-=sum_[p],p-=lowbit(p);
return res;
} inline bool cmp(QueryType aaa,QueryType bbb)
{
if(bel[aaa.l]==bel[bbb.l])
{
if(bel[aaa.r]==bel[bbb.r])
{
if(aaa.l==bbb.l) return aaa.r<bbb.r;
else return aaa.l<bbb.l;
}
return bel[aaa.r]<bel[bbb.r];
}
else return bel[aaa.l]<bel[bbb.l];
} inline void updata(int now,int x)
{
int pre=ti[now];
ti[now]+=x,sadd(now,x);
if(pre==&&ti[now]==) tadd(now,);
if(pre==&&ti[now]==) tadd(now,-);
} int main()
{
in(n),in(m),size=sqrt(n);for(int i=;i<=n;i++) in(ai[i]),bel[i]=(i-)/size;
for(int i=;i<=m;i++) in(qu[i].l),in(qu[i].r),in(qu[i].a),in(qu[i].b),qu[i].id=i;
sort(qu+,qu+m+,cmp);int l=,r=,pos;
for(int no=;no<=m;no++)
{
if(l<qu[no].l) for(int i=l;i<qu[no].l;i++) updata(ai[i],-);
else for(int i=l-;i>=qu[no].l;i--) updata(ai[i],);
if(r>qu[no].r) for(int i=r;i>qu[no].r;i--) updata(ai[i],-);
else for(int i=r+;i<=qu[no].r;i++) updata(ai[i],);
l=qu[no].l,r=qu[no].r,ans[qu[no].id][]=ssum(qu[no].a,qu[no].b),ans[qu[no].id][]=tsum(qu[no].a,qu[no].b);
}
for(int i=;i<=m;i++) printf("%d %d\n",ans[i][],ans[i][]);
return ;
}

最新文章

  1. [Tool] 插入折叠区域功能
  2. CentOS6.3 编译安装LAMP(2):编译安装 Apache2.2.25
  3. antmate.css
  4. 贪心算法(Greedy Algorithm)
  5. JS根据登录的城市不同调用不同的内容
  6. Phabricator部署手册
  7. 你真的了解UITextView吗?
  8. Pitcher Rotation
  9. java-mina(nio 框架)
  10. dwz+jquery+fileupload+springmvc实现文件上传 及图片预览
  11. C/C++中static关键字的用法
  12. 深度揭秘腾讯云TSF日调用量超万亿次背后技术架构
  13. Asp.Net Core 2.0 项目实战(7)MD5加密、AES&amp;DES对称加解密
  14. 【译】索引进阶(六):SQL SERVER索引书签
  15. Android 新架构组件 -- WorkManager
  16. POJ2311 Cutting Game 博弈 SG函数
  17. java四则运算----前缀、中缀、后缀表达式
  18. JSON与Javabean转换的几种形式
  19. angularJS---service
  20. yarn下资源配置

热门文章

  1. Eclipse下JRebel6.5.0热部署插件安装、破解及配置
  2. NIO--2-代码
  3. JavaScript选择打开手机网站还是电脑网站
  4. 利用FFT来进行字符串匹配
  5. 雅礼集训 Day3 T3 w 解题报告
  6. 【BZOJ 1770 】 [Usaco2009 Nov]lights 燈 dfs+异或方程组
  7. MySQL DELAY_KEY_WRITE Option
  8. boost::algorithm用法详解之字符串关系判断
  9. 正确答案 [Hash/枚举]
  10. 对比append插入数据产生的redo量