首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
BZOJ3236:[AHOI2013]作业——题解
】的更多相关文章
[bzoj3809]Gty的二逼妹子序列/[bzoj3236][Ahoi2013]作业
[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&l…
树套树专题——bzoj 3110: [Zjoi2013] K大数查询 & 3236 [Ahoi2013] 作业 题解
[原题1] 3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec Memory Limit: 512 MB Submit: 978 Solved: 476 Description 有N个位置,M个操作.操作有两种,每次操作假设是1 a b c的形式表示在第a个位置到第b个位置,每一个位置增加一个数c 假设是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少. Input 第一行N.M 接下来M行.每行形如1 a b c或2 a b c Outp…
BZOJ3236:[AHOI2013]作业——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=3236 第一种做法: 建两棵主席树分别处理两个问题. 第一个问题水,第二个问题参考SPOJ3267/DQUERY:D-query 但是代码量巨大,显然不能写. 第二种做法: 参考:https://blog.csdn.net/clover_hxy/article/details/56288794 对询问离线莫队,然后莫队里面套值域分块. ……值域分块还是很好写的就不讲了. 可以看出代码量巨短. (e…
BZOJ3236 [Ahoi2013]作业 【莫队 + 树状数组】
题目链接 BZOJ3236 题解 没想到这题真的是如此暴力 #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<map> #define Redge(u) for (int k = h[u],to; k; k = ed[k].nxt) #define REP(i,n) for (int i…
[BZOJ3236]:[Ahoi2013]作业(莫队+分块)
题目传送门 题目描述 此时已是凌晨两点,刚刚做了$Codeforces$的小$A$掏出了英语试卷.英语作业其实不算多,一个小时刚好可以做完.然后是一个小时可与做完的数学作业,接下来是分别都是一个小时可以做完的化学,物理,语文……小$A$压力巨大. 这时小$A$碰到了一道非常恶心的数学题,给定了一个长度为$n$的数列和若干个询问,每个询问是关于数列的区间$[l,r]$(表示数列的第$1$个数到第$r$个数),首先你要统计该区间内大于等于$a$,小于等于$b$的书的个数,其次是所有大于等于$a…
[BZOJ3236][AHOI2013]作业:树套树/莫队+分块
分析 第一问随便搞,直接说第二问. 令原数列为\(seq\),\(pre_i\)为\(seq_i\)这个值上一个出现的位置,于是可以简化询问条件为: \(l \leq i \leq r\) \(a \leq seq_i \leq b\) \(pre_i < l\) 这是一个显然的三维数点问题.发现第三维\(pre_i\)只有最大值的限制,所以我们可以把所有询问按\(l\)升序排序,所有点按\(pre_i\)升序排序,用一个指针从左往右扫所有询问,然后不断向数据结构插入符合第三维要求的点,剩下的两…
bzoj3809 Gty的二逼妹子序列 & bzoj3236 [Ahoi2013]作业 莫队+分块
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=3809 https://lydsy.com/JudgeOnline/problem.php?id=3236 几乎是双倍经验. 题解 对于第一道题目: 如果没有 \(a, b\) 这个区间的限制,那么这道题就是 bzoj1878 [SDOI2009]HH的项链. 这道题虽然有 \(log\) 的做法,不过很多人应该都是拿这道题作为莫队的入门题的. 考虑如果带上范围限制怎么做. 一种显然的做法就是…
BZOJ3236: [Ahoi2013]作业
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 对权值建立线段树,对应询问在权值区间内打上标记,那么最后对线段树上的每个节点,问题就转化成HH的项链了. #include<cstdio> #include<cctype> #include<queue>…
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]作业(莫队,分块)
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 Solution 首先有一个比较显然的做法就是用莫队加树状数组……然而这样的话复杂度是$n\sqrt nlog$. 因为树状数组的修改和查询都是$log$的,所以我们用一个修改$O(1)$,查询$O(\sqrt n)$的分块代替树状…