洛谷题面传送门 一道其实算得上常规的题,写这篇题解是为了总结一些数论中轻微(?)优化复杂度的技巧. 首先感性理解可以发现该问题强于区间数颜色问题,无法用常用的 log 数据结构维护,因此考虑分块/莫队.显然这题莫队比较好些对吧?显然我们要对每个质因子计算一遍它在 \([l,r]\) 中的出现次数对吧?涉及质因子就要分解质因数对吧?莫队时候新添一个元素很明显就要枚举它的每个质因子,然后计算新添的贡献对吧?线性预处理乘法逆元以后,复杂度就变成了 \(n\sqrt{a_i}+(n+q)\sqrt{n}…
题面 Bzoj 洛谷 题解 考虑对操作离线后分块处理询问操作(莫队算法),将询问操作按照编号分块后左端点第一关键字,右端点第二关键字排序(分块大小为\(n^{\frac 23}\)),对于每一个询问操作,记下当前最后一个修改操作. 之后就是莫队的板子了. #include <set> #include <cmath> #include <cstdio> #include <cstring> #include <algorithm> using s…
众所周知lxl是个毒瘤,Ynoi道道都是神仙题,题面好评 原题传送门 一看这题没有修改操作就知道这是莫队题(我也只会莫队) 我博客里对莫队的简单介绍 一个数N可以分解成\(p_1^{c_1}p_2^{c_2}-p_m^{c_m}\) 它的约数个数就是\((c_1+1)(c_2+1)-(c_m+1)\) 我们考虑先把每一个数分解质因数 用试除法会使你tle到没救,所以我们要用pollard's Rho来解决问题 (用质因数分解是因为\(10^9<2*3*5*7*11*13*17*19*23*29\…
题目传送门 题目描述 现有数列 A_1,A_2,\cdots,A_NA1​,A2​,⋯,AN​ ,Q 个询问 (L_i,R_i)(Li​,Ri​) , A_{Li} ,A_{Li+1},\cdots,A_{Ri}ALi​,ALi+1​,⋯,ARi​ 是否互不相同 输入输出格式 输入格式: 第1 行,2 个整数 N,QN,Q 第2 行,N 个整数 A_{Li} ,A_{Li+1},\cdots,A_{Ri}ALi​,ALi+1​,⋯,ARi​ Q 行,每行2 个整数 L_i,R_iLi​,Ri​…
题目 题解 除了\(5\)和\(2\) 后缀数字对\(P\)取模意义下,两个位置相减如果为\(0\),那么对应子串即为\(P\)的倍数 只用对区间种相同数个数\(x\)贡献\({x \choose 2}\) 经典莫队题 \(P = 2\)或\(5\)就特判一下 #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> #def…
传送门 lxl大毒瘤 首先一个数的因子个数就是这个数的每个质因子的次数+1的积,然后考虑把每个数分解质因子,用莫队维护,然后我交上去就0分了 如果是上面那样的话,我们每一次移动指针的时间复杂度是O(这个数的质因子个数),再加上我人傻常数大,T很正常-- 于是按照memset0的说法,可以预处理质因子的前缀和,简单来说就是对于小于\(\sqrt{mx}\)的所有质因子维护前缀和,直接统计,大于的暴力在莫队的时候更新.因为每个数大于\(\sqrt{mx}\)的质因子个数为\(O(1)\),所以暴力更…
题面传送门 莫队二次离线 mol ban tea,大概是这道题让我第一次听说有这东西? 首先看到这类数数对的问题可以考虑莫队,记 \(S\) 为二进制下有 \(k\) 个 \(1\) 的数集,我们实时维护一个桶 \(cnt_i\) 表示当前区间中值为 \(i\) 的数有多少个,那么加入一个数 \(v\) 的时候,答案会增加 \(\sum\limits_{y\in S}cnt_{y\oplus v}\),这样暴力莫队复杂度是 \(n\sqrt{n}\dbinom{14}{k}\),如果你过了我请你…
重温下手感,判断区间是否全是不同的数字有两种做法,一个长度为len的区间不同的数字,参见HH的项链,一种是区间众数,参见蒲公英,是水题没错了.明天搞数据库,然后继续自己的gre和训练计划 #include <bits/stdc++.h> using namespace std; #define limit (10005 + 5)//防止溢出 #define INF 0x3f3f3f3f #define inf 0x3f3f3f3f3f #define lowbit(i) i&(-i)/…
一道神题...自己写出来以后被卡常了...荣获洛谷最差解... 思路还是比较好想,对于每个数 \(\sqrt{n}\) 分块,对于 \(\sqrt{n}\) 以内的数,我们可以直接求出来.对于 \(\sqrt{n}\) 以上的数,我们用莫队求. 不过空间 \(O(\frac {n\sqrt{10^9}}{\log n})\) 开不下,非常优秀... 那我们就把前 $100$ 个质数求出来,其他就用莫队好了,转移均摊是 \(O(1)\) 的吧... 常数巨大,本人没卡常.记得要等一个没人的时候提交…
题目链接:洛谷 这个跟上上个Ynoi题目是一样的套路,首先我们知道\(n=\prod p_i^{\alpha_i}\)时\(d(n)=\prod (\alpha_i+1)\). 首先对所有数分解质因数,首先预处理\(\leq \sqrt{\max a_i}\)的所有质数,然后一个一个试除,时间复杂度\(O(\frac{n\sqrt{a_i}}{\log{a_i}})\),在lxl的数据下跑得飞快(大家都知道,卡常是要看数据性质的).或者使用Pollard-rho分解也是可以的. 然后莫队,维护\…