反演+分块套分块——bzoj2154】的更多相关文章

题解都在论文里了 #include<bits/stdc++.h> using namespace std; #define maxn 10000005 #define ll long long #define mod 20101009 bool vis[maxn]; int sum[maxn],prime[maxn],mm,mu[maxn]; void primes(){ mu[]=; ;i<maxn;i++){ if(!vis[i]){ prime[++mm]=i; mu[i]=-;…
题目链接 详细题解:https://www.cnblogs.com/autsky-jadek/p/4376091.html 代码参考自:https://www.cnblogs.com/Sakits/p/8445534.html 思路好理解,然而就是写了一下午+一晚上.. \(Description\) 给定一个长为n的序列,每次查询区间中出现次数k1小的数里面的k2小的数.卡空间. \(Solution\) 将出现次数按权值分块,这样可以实现\(O(1)\)插入,\(O(sqrt(n))\)查询…
思路挺简单的,但是总感觉好难写...码力还是差劲,最后写出来也挺丑的 这题显然是个莫队题,考虑怎么转移和询问... 根据莫队修改多查询少的特点,一般用修改快查询慢的分块来维护.查第$k_1$小的出现次数可以用权值分块做到$O(1)$修改,$O(\sqrt{n})$查询,$k_2$小的数同理.对于每一种出现次数$i$,预处理出有几种数在序列里的出现次数$\geq i$,并在每种出现次数中对这些数离散化,这样我们就能对每种出现次数进行权值分块查第$k_2$小的数了. 因为$\sum cnt_i=n$…
假设我们要筛一个东西叫做 \(f\) . 记 \[D(n)=\left\{n,\left\lfloor\dfrac n2\right\rfloor,\left\lfloor\dfrac n3\right\rfloor,\left\lfloor\dfrac n4\right\rfloor,\cdots\right\} \] 那么我们知道杜教筛在计算 \(f(n)\) 时实际上是对 \(D(n)\) 中的所有数都计算了一遍 \(f(n)\) 并存入了缓存 . 然而我们整除分块的过程就是求 \(D(n…
题目描述 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b)表示能同时被a和b整除的最小正整数.例如,LCM(6, 8) = 24.回到家后,Crash还在想着课上学的东西,为了研究最小公倍数,他画了一张N*M的表格.每个格子里写了一个数字,其中第i行第j列的那个格子里写着数为LCM(i, j).一个4*5的表格如下: 1  2  3  4  5 2  2  6  4  10 3  6  3  12 15 4…
题目描述 Doris刚刚学习了fibonacci数列.用f[i]表示数列的第i项,那么 f[0]=0 f[1]=1 f[n]=f[n-1]+f[n-2],n>=2 Doris用老师的超级计算机生成了一个n×m的表格,第i行第j列的格子中的数是f[gcd(i,j)],其中gcd(i,j)表示i, j的最大公约数.Doris的表格中共有n×m个数,她想知道这些数的乘积是多少.答案对10^9+7取模. 输入 有多组测试数据. 第一个一个数T,表示数据组数. 接下来T行,每行两个数n,m T<=100…
题目背景 提示:原 P1829 半数集问题 已经迁移至 P1028 数的计算 题目描述 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b)表示能同时整除a和b的最小正整数.例如,LCM(6, 8) = 24. 回到家后,Crash还在想着课上学的东西,为了研究最小公倍数,他画了一张N*M的表格.每个格子里写了一个数字,其中第i行第j列的那个格子里写着数为LCM(i, j).一个4*5的表格如下: 1 2 3 4…
数论什么的全都忘光了吧QAQ 做了几道简单的题练习一下. bzoj1101: [POI2007]Zap 求有多少对数满足 gcd(x,y)=d, 1<=x<=a, 1<=y<=b 首先那个d肯定是要除下去的, 变成 gcd(x,y) = 1, 1<=x<=a, 1<=y<=b这样一个问题. 这样就变成了最经典的莫比乌斯反演, 设f(d)为 gcd(x,y) = d, 1<=x<=a, 1<=y<=b时满足要求的x,y的个数,F(d)…
题面 MtOI2019 幽灵乐团 给定 \(p\),\(Cnt\) 组测试数据,每次给 \(a,b,c\),求 \[\prod_{i=1}^a\prod_{j=1}^b\prod_{k=1}^c\left(\frac{{\rm lcm}(i,j)}{\gcd(i,k)}\right)^{f(t)}\bmod p \] \(t\in\{0,1,2\}\),\(f(0)=1,f(1)=ijk,f(2)=\gcd(i,j,k)\). 数据范围:\(1\le a,b,c\le 10^5\),\(10^7…
题解-[SDOI2017]数字表格 前置知识: 莫比乌斯反演</> [SDOI2017]数字表格 \(T\) 组测试数据,\(f_i\) 表示 \(\texttt{Fibonacci}\) 数列第 \(i\) 项(\(f_0=0\),\(f_1=1\),\(f_i=f_{i-1}+f_{i-2}\)),求 \[\left(\prod\limits_{i=1}^n\prod\limits_{j=1}^mf_{\gcd(i,j)}\right)\bmod(10^9+7) \] 数据范围:\(T\l…
题面 空间只有$64\text{MB}$!!! 题解 (据说正解是毒瘤分块套分块) 按照权值从大到小排序,对所有能够覆盖到它的区间的左端点打个标记 按照值域建一棵主席树就可以了 区间查询最大值,用$m$减去它即可 如何卡空间??? 用位域将主席树的节点信息压到一个unsigned long long中 将叶节点改成一个值,节省空间.(但是还是要开40倍) 永久化的标记和值压在一起. 最后以大约$63\text{MB}$的空间卡了过去. 代码 #include<cstdio> #include&…
Description 题面 Solution 分块套分块,分别对时间和位置进行分块 差不多是一个定期保存信息的方法 对于询问我们不妨求出 \(>=x\) 的答案,然后用 \(m-(>=x)\) 的答案,避免了严格小于带来的麻烦 暴力做法是把数字从大到小加入,然后每一次做区间修改,主席树维护一下,但空间复杂度太大 我们同样这么做,想办法均摊时间和空间复杂度 我们设定一个 \(S\),每过 \(S\) 的时间就将主席树维护的东西暴力存下来 但是暴力存下来空间开不下,我们想办法对序列分块,分别保存…
散步的时候yy区间最值的不同分块做法,发现单点修改\(O(\sqrt{n})\)查询\(O(1)\)的做法不是很会? 于是yy了一个奇怪做法,写出来看看. 考虑查询的时候两端的散点可以用前后缀最值查出来,所以只需要考虑中间的块. 中间这些块似乎比较恶心,不知道怎么做. 于是我们把每一个块的最值拎出来作为一个点,再分一次块,就成功地用\(O(1)\)的时间把问题变成了根号级别的子问题. 于是分块套分块套分块套--,似乎很对? 如果左右端点都在同一个块内那么不是很好玩,就对每一个块里面也分块,也是一…
题目 像素有点低啊~ 算了凑合一下就好啦~ 题目大意 给你一个首尾相接的数列,每次对一个区间进行操作: 顺时针操作,如果当前值比vvv大,就交换.输出最后的vvv. 比赛思路 首先这题的时限这么仁慈,一定有天大玄机. 并且一看这题,就感觉像是一个数据结构. 首先在想链表,但显然这题链表不可做. 然后一直在想带修主席树. 没想出来-- 最后弃疗,直接打了个暴力. WTF?15分?说好的25分呢? 然而实际上这题很没良心地捆绑数据,将10分和另外15分绑在一起了. 出题人,你怎么能这样子啊?你忍心吗…
[游记]THUWC2019-2 Bystander Day0/-1 感觉自己怎么样都去不了PKUWC(没错)了,差点放弃模拟面试,在老妈的要求下勉强面试,自我介绍没怎么准备,然后就说 我喜欢唱跳Rap篮球. Apple好像没有注意到什么不对劲233 然后我下午晚上开始准备在CJ继续的机房生活,当我在寝室睡觉时 (呼噜噜...呼噜噜...呼噜噜...) 然后生活老师进来了,要我接个电话,然后一顿操作晚上接近一点钟我到了家. 算了权当去THUWC学习一下....我想去PKU啊 和托腮一个房间,托腮好…
题面 洛谷P6788 「EZEC-3」四月樱花 给定 \(n,p\),求: \[ans=\left(\prod_{x=1}^n\prod_{y|x}\frac{y^{d(y)}}{\prod_{z|y}(z+1)^2}\right)\bmod p \] 数据范围:\(1\le n\le 2.5\cdot 10^9\),\(9.9\cdot 10^8<p<1.1\cdot 10^9\). 蒟蒻语 一道题撑起一场月赛,良心又劲爆. 膜拜出题人 @SOSCHINA,@muxii. 蒟蒻解 开局一波猛…
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=37166 题意:对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 思路:本题使用莫比乌斯反演要利用分块来优化,那么每次询问的复杂度降为2*sqrt(n)+2*sqrt(m).注意到 n/i ,在连续的k区间内存在,n/i=n/(i+k).所有对这连续的区间可以一次求出…
题面: 传送门 有洛谷就尽量放洛谷链接呗,界面友好一点 思路: 和HDU1695比较像,但是这一回有50000组数据,直接莫比乌斯反演慢慢加的话会T 先解决一个前置问题:怎么处理a,c不是1的情况? 很简单,容斥原理搞之 我们设f(x,y)代表gcd(i,j)==e(1<=i<=x,1<=j<=y)的无序数对(i,j)的个数 那么本题答案相当于f(d,b)-f(c-1,b)-f(a-1,d)+f(a-1,c-1) 再来看反演超时的问题 我们注意到原反演过程中,f(1)==mu(i)…
题面:Rmq Problem / mex 题解: 先离散化,然后插一堆空白,大体就是如果(对于以a.data<b.data排序后的A)A[i-1].data+1!=A[i].data,则插一个空白叫做A[i-1].data+1, 开头和最尾也要这么插,意义是如果取不了A[i-1]了,最早能取的是啥数.要把这些空白也离散化然后扔主席树里啊. 主席树维护每个数A[i]出现的最晚位置(tree[i].data),查询时查询root[R]的树中最早的data<L的节点(这意味着该节点的下标离散化前代…
题面 LOJ #2802. 「CCC 2018」平衡树 题面有点难看...请认真阅读理解题意. 转化后就是,给你一个数 \(N\) ,每次选择一个 \(k \in [2, N]\) 将 \(N\) 变成 \(\displaystyle \lfloor \frac{N}{k} \rfloor\) ,到 \(1\) 停止. 求一共有多少不同的操作序列,也就是操作次数不一样或者某次操作的 \(k\) 不相同. 题解 首先考虑 dp ,令 \(f_i\) 为以 \(i\) 为开头的不同操作序列数. 显然…
经典问题:二维偏序.给定平面中的n个点,求每个点左下方的点的个数. 因为 所有点已经以y为第一关键字,x为第二关键字排好序,所以我们按读入顺序处理,仅仅需要计算x坐标小于<=某个点的点有多少个就行. 这就是所说的:n维偏序,一维排序,二维树状数组,三维 分治 Or 树状数组套平衡树…… <法一>树状数组. #include<cstdio> #include<algorithm> #include<iostream> using namespace st…
~~推荐播客~~ 「分块」数列分块入门1 – 9 by hzwer 浅谈基础根号算法——分块 博主蒟蒻,有缘人可直接观摩以上大佬的博客... #6277. 数列分块入门 1 题目大意: 给出一个长为 $n$ 的数列,以及 $n$ 个操作,操作涉及区间加法,单点查值. 分块入门,区间修改+单点查询 所谓分块,实际上是一种优美的暴力,算是一种数据结构吧...将区间分成许多大小相同的块,对于多出来的部分暴力去做,一般块的大小为$√n$ 看了大佬们的代码,有点儿懵逼=_=来模拟一下流程吧,可能会清晰一点…
首先说明这篇博客写得奇差无比 让我们理清一下为什么要打分块,在大部分情况下,线段树啊,splay,treap,主席树什么的都要比分块的效率高得多,但是在出问题的时候如果你和这些数据结构只是混的脸熟的话,一旦错误可能就会导致心态崩溃,而且调试困难(大佬:很轻松啊....)所以,分块是一个时间效率不是很高的,代码量也不是很高的数据结构,水分是可以的,在全场都是30分的情况下,你能用分块水到个60,70就是胜利,所以分块很多时候也是和STL一起用的,达到(nlogn√n)的效果吧. 原理 把一段数列1…
题面传送门 题意: 求 \[\prod\limits_{x=1}^n\prod\limits_{y|x}\frac{y^{d(y)}}{\prod\limits_{z|y}z+1} \pmod{p} \] \(1 \leq n \leq 10^9\) \[y^{d(y)}=\prod_{z|y}y=\prod\limits_{z|y}z\times\frac{y}{z}=\prod\limits_{z|y}z^2 \] 然后 \[\begin{aligned}ans&=\prod\limits_…
http://tyvj.cn/Problem_Show.aspx?id=1463 二分的话是水题啊.. 为了学分块还是来写这题吧.. 二分: #include <cstdio> #include <cstring> #include <cmath> #include <string> #include <iostream> #include <algorithm> using namespace std; #define rep(i,…
1.基本概念 索引查找又称分级查找. 索引存储的基本思想是:首先把一个集合或线性表(他们对应为主表)按照一定的函数关系或条件划分成若干个逻辑上的子表,为每个子表分别建立一个索引项,由所有 这些索引项构成主表的一个索引表,然后,可采用顺序或链接的方式来存储索引表和每个子表. 索引表的类型可定义如下: struct IndexItem {     IndexKeyType index;//IndexKeyType为事先定义的索引值类型     int start;         //子表中第一个元…
简介:分块算法主要是把区间划分成sqrt(n)块,从而降低暴力的复杂度, 其实这算是一种优化的暴力吧,复杂度O(n*sqrt(n)) 题意:给定一个数列:a[i]    (1<= i <= n)    K[j]表示 在区间 [l,r]中j出现的次数. 有t个查询,每个查询l,r,对区间内所有a[i],求sigma(K[a[i]]^2*a[i]) 思路:离线+分块处理 分块和离线处理: 将n个数分成sqrt(n)块,设每块有bsize个数, 并且我们计算出每个询问的左端点所在的块号(q[i].b…
分块,根据句子的词和词性,按照规则组织合分块,分块代表实体.常见实体,组织.人员.地点.日期.时间.名词短语分块(NP-chunking),通过词性标记.规则识别,通过机器学习方法识别.介词短语(PP).动词短语(VP).句子(S). 分块标记,IOB标记,I(inside,内部).O(outside,外部).B(begin,开始).树结构存储分块.多级分块,多重分块方法.级联分块. 关系抽取,找出实体间关系.实体识别认知事物,关系识别掌握真相.三元组(X,a,Y),X.Y实体,a表达关系字符串…
正解:莫队/分块 解题报告: 传送门 ummm这题耗了我一天差不多然后我到现在还没做完:D 而同机房的大佬用了一个小时没有就切了?大概这就是大佬和弱鸡的差距趴QAQ 然后只是大概写下思想好了因为代码我还没打出来QAQ 先说莫队? 莫队似乎有俩方式能过呢 首先是个暴力,就只对l1r1排序让l2r2乱跳,然后神仙hl过去了?然后我就过不去?委屈:D 然后可以前缀和优化一波,这个大概是最稳的,然后文佬的博客似乎写了qwq有时间再研究下趴QAQ大概思路知道一下就成立就是个二维前缀和的玩意儿qwq 然后说…
Partitioning is a master/slave step configuration that allows for partitions of data to be processed in parallel. Each partition is described via some metadata. For example, if you were processing a database table, partition 1 may be ids 0-100, parti…