题面:

3236: [Ahoi2013]作业

Time Limit: 100 Sec  Memory Limit: 512 MB
Submit: 1704  Solved: 685
[Submit][Status][Discuss]

Description

Input

Output

Sample Input

3 4
1 2 2
1 2 1 3
1 2 1 1
1 3 1 3
2 3 2 3

Sample Output

2 2
1 1
3 2
2 1

HINT

N=100000,M=1000000

离线莫队处理,对权值分块。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<cmath>
 6 #define N 100055
 7 #define M 1000066
 8 using namespace std;
 9 int gy[N],be[N],c[M],cc[M],n,m,nn,maxn,tot,num[N];
10 struct Query{
11     int l,r,a,b,id,ans1,ans2;
12 }qr[M];
13 bool cmp1(Query a,Query b){
14     if(be[a.l]==be[b.l])
15         return a.r<b.r;
16     return be[a.l]<be[b.l];
17 }
18 bool cmp2(Query a,Query b){
19     return a.id<b.id;
20 }
21 int lowbit(int x){
22     return x&(-x);
23 }
24 void add(int x,int y){
25     int xx=x;
26     if(y==1&&++num[xx]==1){
27         while(xx<=maxn){
28             cc[xx]++;
29             xx+=lowbit(xx);
30         }
31     }
32     if(y==-1&&--num[xx]==0){
33         while(xx<=maxn){
34             cc[xx]--;
35             xx+=lowbit(xx);
36         }
37     }
38     while(x<=maxn){
39         c[x]+=y;
40         x+=lowbit(x);
41     }
42 }
43 int query(int x){
44     if(x>maxn) x=maxn;
45     int ans=0;
46     while(x){
47         ans+=c[x];
48         x-=lowbit(x);
49     }
50     return ans;
51 }
52 int query1(int x){
53     if(x>maxn) x=maxn;
54     int ans=0;
55     while(x){
56         ans+=cc[x];
57         x-=lowbit(x);
58     }
59     return ans;
60 }
61 void work(){
62     int l=1,r=0;tot=0;
63     for(int i=1;i<=m;i++){
64         while(l<qr[i].l) add(gy[l++],-1);
65         while(l>qr[i].l) add(gy[--l],1);
66         while(r<qr[i].r) add(gy[++r],1);
67         while(r>qr[i].r) add(gy[r--],-1);
68         qr[i].ans1=query(qr[i].b)-query(qr[i].a-1);
69         qr[i].ans2=query1(qr[i].b)-query1(qr[i].a-1);
70     }
71 }
72 int main()
73 {
74     scanf("%d%d",&n,&m); nn=(int)sqrt(n);
75     for(int i=1;i<=n;i++){
76         scanf("%d",&gy[i]);
77         be[i]=(i-1)/nn+1;
78         maxn=max(maxn,gy[i]);
79     }
80     int l,r,a,b;
81     for(int i=1;i<=m;i++){
82         scanf("%d%d%d%d",&l,&r,&a,&b);
83         qr[i].l=l; qr[i].r=r;
84         qr[i].a=a; qr[i].b=b;
85         qr[i].id=i;
86     }
87     sort(qr+1,qr+m+1,cmp1);
88     work();
89     sort(qr+1,qr+m+1,cmp2);
90     for(int i=1;i<=m;i++)
91         printf("%d %d\n",qr[i].ans1,qr[i].ans2);
92     return 0;
93 }

BZOJ 3236

转载于:https://www.cnblogs.com/radioteletscope/p/7241903.html

BZOJ 3236[AHOI2013]作业相关推荐

  1. [BZOJ 3236] [Ahoi2013] 作业 [BZOJ 3809] 【莫队(+分块)】

    题目链接: BZOJ - 3236   BZOJ - 3809 算法一:莫队 首先,单纯的莫队算法是很好想的,就是用普通的第一关键字为 l 所在块,第二关键字为 r 的莫队. 这样每次端点移动添加或删 ...

  2. Bzoj3236:[Ahoi2013]作业:莫队算法+树状数组

    题目链接:3236:[Ahoi2013]作业 这题-- 很水的一道莫队,只要用一个树状数组维护数值出现的前缀和就行就行 然而-- 可怜的我真是T得蛋疼了QAQ 先是写了一发裸莫队,T 卧槽T了? 快速 ...

  3. P4396 [AHOI2013]作业 cdq分治

    传送门 文章目录 题意: 思路: 题意: 给你一个长度为nnn的数列aaa,有qqq个询问,每次询问[l,r][l,r][l,r]中值域在[a,b][a,b][a,b]中的数出现的次数和在[a,b][ ...

  4. P4396 [AHOI2013]作业

    P4396 [AHOI2013]作业 题目描述 详见:P4396 [AHOI2013]作业 solution 莫队+树状数组的裸题(莫队+分块,CDQ分治都可以,莫队+线段树大概需要卡常). 时间复杂 ...

  5. BZOJ 3237: [Ahoi2013]连通图

    3237: [Ahoi2013]连通图 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 1161  Solved: 399 [Submit][Stat ...

  6. BZOJ3236 [Ahoi2013]作业

    昨天晚上做的...差错一直查到今天= = 最后没办法问管理员要了数据才知道原来ans数组开小了233,简直沙茶 这道题不就是裸的莫队嘛= =||| 只要用树状数组维护当前的两种个数即可. 1 /*** ...

  7. BZOJ 3238: [Ahoi2013]差异 [后缀数组 单调栈]

    3238: [Ahoi2013]差异 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 2326  Solved: 1054 [Submit][Stat ...

  8. bzoj 3238: [Ahoi2013]差异(后缀数组+单调栈)

    3238: [Ahoi2013]差异 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 3443  Solved: 1562 [Submit][Stat ...

  9. BZOJ 2326 数学作业(分段矩阵快速幂)

    实际上,对于位数相同的连续段,可以用矩阵快速幂求出最后的ans,那么题目中一共只有18个连续段. 分段矩阵快速幂即可. #include<cstdio> #include<iostr ...

最新文章

  1. spring@PropertySource用法
  2. 你知道Integer和int的区别吗
  3. 【android】读取/res/raw目录下的文件
  4. windows共享文件服务器迁移(NTFS权限,共享权限,磁盘配额迁移)
  5. android 好看的输入法,Android 手机上最好的输入法是哪种
  6. 苹果HTC专利战正酣: 逃离Android?
  7. 数组元素的填充与替换、排序和复制
  8. linux运行tomcat常见问题,linux – tomcat运行,但是8080端口没有响应
  9. 《圆明园的毁灭》教学设计方案
  10. 技巧积累篇--Dashboard使用技巧
  11. vfp access mysql具体_详细介绍Visual FoxPro数据表的索引
  12. 重装系统后计算机无法启动,重装系统后电脑为什么启动不了?云骑士告诉你怎么办?...
  13. 金山词霸 [2009牛津版] 金山词霸pdf插件
  14. Cesium 源码解析 Model(一)
  15. Libevent 学习七:Libevent 两个实例
  16. Java项目结构及路径
  17. IT十年人生过客-十一-新挑战
  18. Cesium:入门教程(三)之视窗配置
  19. 小学语文哪课适合用计算机,小学语文新课心得体会
  20. 将“碳中和”融入企业发展,经济学人集团制订“双25”减排计划

热门文章

  1. 结合Jexus + Kestrel 部署 asp.net core 生产环境
  2. ECharts+BaiduMap+HT for Web网络拓扑图应用
  3. ioremap 与 mmap【转】
  4. rhel6.2 yum
  5. 企业为什么需要网络流量分析
  6. 深度学习笔记6:Learning color features with Sparse Autoencoders
  7. Self-Tuning Spectral Clustering论文阅读和代码理解
  8. 机器学习模型解释性工具SHAP
  9. Linux下为文件增加列的shell脚本
  10. Nutch编译及集成eclipse+mysql开发环境的部署总结