[bzoj3809]Gty的二逼妹子序列/[bzoj3236][Ahoi2013]作业
bzoj bzoj
题目大意:一个序列,m个询问在$[l,r]$区间的$[x,y]$范围内的数的个数/种类。
思路:
因为看不出来怎么做,所以考虑莫队。
太懒想写个树状数组但是$n\sqrt{n}log_{n}$太虚
所以将数分块,修改$O(1)$,查询$O(\sqrt{n})$
完结
1 #include<algorithm> 2 #include<cstdio> 3 #include<cmath> 4 using namespace std; 5 const int N=114514,SN=366; 6 template<typename tp>inline void read(tp &kk){ 7 tp ret=0,f=1;char ch=getchar(); 8 while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} 9 while(ch>='0'&&ch<='9'){ret=ret*10+ch-'0';ch=getchar();} 10 kk=ret*f; 11 } 12 int n,m,a[N],bl[N],bs; 13 struct ques 14 { 15 int l,r,x,y,id; 16 bool operator < (const ques &a)const{return bl[l]==bl[a.l]?r<a.r:bl[l]<bl[a.l];} 17 void init(int i){id=i;read(l),read(r),read(x),read(y);} 18 }q[N]; 19 20 struct ans 21 { 22 int a1,a2; 23 ans(){a1=a2=0;} 24 }prt[N]; 25 26 struct ShangYang 27 { 28 int l[SN],r[SN],buk[SN],bukk[SN],b[N],po[N],sz; 29 void start() 30 { 31 sz=ceil(sqrt(100000)); 32 int bb=0; 33 for(int i=1;i<=n;i+=sz) 34 { 35 bb++; 36 l[bb]=i; 37 r[bb]=min(i+sz-1,n); 38 for(int j=l[bb];j<=r[bb];j++) b[j]=bb; 39 } 40 } 41 void add(int x) 42 { 43 if(!po[x]) bukk[b[x]]++; 44 po[x]++; 45 buk[b[x]]++; 46 } 47 void mus(int x) 48 { 49 po[x]--; 50 buk[b[x]]--; 51 if(!po[x]) bukk[b[x]]--; 52 } 53 ans query(int x,int y) 54 { 55 ans ret; 56 int bx=b[x],by=b[y]; 57 if(bx==by) 58 { 59 for(int i=x;i<=y;i++) 60 ret.a1+=po[i],ret.a2+=(!!po[i]); 61 }else 62 { 63 for(int i=bx+1;i<by;i++) 64 ret.a1+=buk[i],ret.a2+=bukk[i]; 65 for(int i=x;i<=r[bx];i++) 66 ret.a1+=po[i],ret.a2+=(!!po[i]); 67 for(int i=l[by];i<=y;i++) 68 ret.a1+=po[i],ret.a2+=(!!po[i]); 69 } 70 return ret; 71 } 72 }sy; 73 74 void icu() 75 { 76 int l=1,r=0; 77 for(int i=1;i<=m;i++) 78 { 79 while(r<q[i].r) sy.add(a[++r]); 80 while(l>q[i].l) sy.add(a[--l]); 81 while(r>q[i].r) sy.mus(a[r--]); 82 while(l<q[i].l) sy.mus(a[l++]); 83 prt[q[i].id]=sy.query(q[i].x,q[i].y); 84 } 85 } 86 87 int main() 88 { 89 read(n),read(m); 90 bs=ceil(sqrt(n)); 91 for(int i=1;i<=n;i++) read(a[i]),bl[i]=(i-1)/bs+1; 92 for(int i=1;i<=m;i++) q[i].init(i); 93 // puts("114514"); 94 sy.start(); 95 sort(q+1,q+1+m); 96 icu(); 97 // puts("1919810"); 98 for(int i=1;i<=m;i++) printf("%d %d\n",prt[i].a1,prt[i].a2); 99 return 0; 100 }
View Code
转载于:https://www.cnblogs.com/rikurika/p/11252219.html
[bzoj3809]Gty的二逼妹子序列/[bzoj3236][Ahoi2013]作业相关推荐
- BZOJ3809: Gty的二逼妹子序列
BZOJ3809: Gty的二逼妹子序列 又是一道权限题... 本蒟蒻没钱氪金... 附上洛谷题面: 洛谷P4867 Gty的二逼妹子序列 题目描述 Autumn和Bakser又在研究Gty的妹子序列 ...
- [BZOJ3809]Gty的二逼妹子序列
[BZOJ3809]Gty的二逼妹子序列 试题描述 Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题. 对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b]的妹子的美丽 ...
- 【bzoj3089】gty的二逼妹子序列
一眼又是个莫队-- 首先看这时间/空间复杂度,线段树/主席树就别想了-- 然后么--zcy就有点傻了-- 于是zcy看了下hzwer,感觉受教育了. 分块的调块大小真是玄学设计. 有没有一种方法在修改 ...
- P4867-Gty的二逼妹子序列【平衡结合,莫队,分块】
正题 题目链接:https://www.luogu.com.cn/problem/P4867 题目大意 一个序列要求支持询问一个区间[l,r][l,r][l,r]内在[a,b][a,b][a,b]之间 ...
- [BZOJ3236][Ahoi2013]作业(莫队+树状数组)
此题的询问是一个位置和权值都有限制的二维区间,但是题目具备无修改和允许离线两个条件,可以用莫队算法解决. 一个想法是:用莫队维护位置,树状数组维护权值. 具体的说,用一个数组 cnt cnt,维护莫队 ...
- BZOJ3236 [Ahoi2013]作业
昨天晚上做的...差错一直查到今天= = 最后没办法问管理员要了数据才知道原来ans数组开小了233,简直沙茶 这道题不就是裸的莫队嘛= =||| 只要用树状数组维护当前的两种个数即可. 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 ...
- Bzoj3236:[Ahoi2013]作业:莫队算法+树状数组
题目链接:3236:[Ahoi2013]作业 这题-- 很水的一道莫队,只要用一个树状数组维护数值出现的前缀和就行就行 然而-- 可怜的我真是T得蛋疼了QAQ 先是写了一发裸莫队,T 卧槽T了? 快速 ...
- 【bzoj3744】Gty的妹子序列 分块+树状数组+主席树
题目描述 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见-- 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他发现 她们排成 ...
- #BZOJ3744 GTY的妹子序列
Description 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见-- 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他 ...
最新文章
- 电子科技大学技术交流报道
- 参观 Google 总部是一种什么体验?
- 高清还原破损视频,参数和训练时间减少三分之二,台大这项研究登上了BMVC 2019...
- Go 语言编程 — 作用域
- 继承extends、super、this、方法重写overiding、final、代码块_DAY08
- Team Work(CF 932 E)[bzoj5093][Lydsy1711月赛]图的价值
- 项目测试基础:白盒测试相关知识笔记
- 第二次小组实践作业小组每日进度汇报:2017-11-29
- 有限域f9的特征是多少_第四章有限域1.ppt
- Win10 开机system进程占用CPU 20%,ACPI.sys hardware interrupt
- python进行图像识别与分类_使用机器学习模型快速进行图像分类识别
- 【学点心理学】八本值得反复阅读的心理类书籍推荐
- Linux学习之安装配置VM虚拟机
- word的页脚页码从9开始后面全是1,怎么解决?
- @Resource和@Autowired的区别
- ffmpeg超时设置
- layui 日期选择器 laydate详细参数用法大全,一键复制粘贴
- VS2022的下载和使用
- 钉钉企业微信集成免登录
- 自定义 PSPad 文本编辑器 编辑热键 By shawl.qiu