[Ynoi2015]此时此刻的光辉(莫队)】的更多相关文章

一道神题...自己写出来以后被卡常了...荣获洛谷最差解... 思路还是比较好想,对于每个数 \(\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分解也是可以的. 然后莫队,维护\…
洛谷题面传送门 一道其实算得上常规的题,写这篇题解是为了总结一些数论中轻微(?)优化复杂度的技巧. 首先感性理解可以发现该问题强于区间数颜色问题,无法用常用的 log 数据结构维护,因此考虑分块/莫队.显然这题莫队比较好些对吧?显然我们要对每个质因子计算一遍它在 \([l,r]\) 中的出现次数对吧?涉及质因子就要分解质因数对吧?莫队时候新添一个元素很明显就要枚举它的每个质因子,然后计算新添的贡献对吧?线性预处理乘法逆元以后,复杂度就变成了 \(n\sqrt{a_i}+(n+q)\sqrt{n}…
题目大意: 给定一个序列,每次询问一段区间的数的乘积的约数个数. 解题思路: 在太阳西斜的这个世界里,置身天上之森.等这场战争结束之后,不归之人与望眼欲穿的众人, 人人本着正义之名,长存不灭的过去.逐渐消逝的未来.我回来了,纵使日薄西山,即便看不到未来,此时此刻的光辉,盼君勿忘.————世界上最幸福的女孩 我永远喜欢珂朵莉. --- \(10^9\)以内的数最多有10个不同的质因子. 考虑对其质因数分解. 由于值域范围过大,考虑使用Pollard-Rho算法. 这里普通的Pollard-Rho算…
众所周知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\…
传送门 lxl大毒瘤 首先一个数的因子个数就是这个数的每个质因子的次数+1的积,然后考虑把每个数分解质因子,用莫队维护,然后我交上去就0分了 如果是上面那样的话,我们每一次移动指针的时间复杂度是O(这个数的质因子个数),再加上我人傻常数大,T很正常-- 于是按照memset0的说法,可以预处理质因子的前缀和,简单来说就是对于小于\(\sqrt{mx}\)的所有质因子维护前缀和,直接统计,大于的暴力在莫队的时候更新.因为每个数大于\(\sqrt{mx}\)的质因子个数为\(O(1)\),所以暴力更…
传送门 辣鸡卡常题目浪费我一下午-- 思路 显然是一道莫队. 假设区间长度为\(len\),\(x\)的出现次数为\(k\),那么\(x\)的贡献就是\(x(2^{len-k}(2^k-1))\),即\(x2^{len}-x2^{len-k}\). 发现前面那东西很好维护,后面怎么办呢? 考虑把出现次数相同的数放在一起维护:维护每个出现次数里面数的和,统计答案的时候暴力统计. 为什么对呢?因为\(1+2+\dots+\sqrt{n}=n\),所以最多只有\(\sqrt n\)种次数,暴力即可.…
点此看题面 大致题意: 一个序列,每次询问一个区间\([l,r]\)并给出一个模数\(p\),求模\(p\)意义下区间\([l,r]\)内所有子序列去重后值的和. 题意转化 原来的题意看起来似乎很棘手,因此需要一定的转化. 考虑一个值\(x\)的贡献,设它在区间中出现的次数为\(cnt_x\),则共有\(2^{r-l+1}-2^{r-l+1-cnt_x}\)个子序列中有这个值,因此它的贡献就是\(x\cdot (2^{r-l+1}-2^{r-l+1-cnt_x})\). 经这么一转化,不难发现,…
题目描述:对于一个长度为\(n\)的序列,\(m\)次询问\(l,r,p\),计算\([l,r]\)的所有子序列的不同数之和\(\mathrm{mod} \ p\). 数据范围:\(n,m,a_i\leq 10^5,p\leq 10^9\) 来做做Ynoi中相对简单的题目... 首先我们考虑每个数的贡献,如果它出现了\(k\)次,那么会在\(2^{r-l+1}-2^{r-l+1-k}\)个子序列中出现.所以维护\(s[k]\)表示所有出现\(k\)次的数之和,而且\(s[k]\)中不为0的只有\…
3289: Mato的文件管理 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 2399  Solved: 988[Submit][Status][Discuss] Description Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号.为了防止他人偷拷,这些资料都是加密过的,只能用Mato自己写的程序才能访问.Mato每天随机选一个区间[l,r],他今天就看编号在此区间内的这些资料.Mat…