UR#13 SRAND
总感觉这位大仙讲的很清楚:bztminamoto
题意
题目讲的是求 l~r 内所有数的次大质因子,这里设 f(x) 为 x 的次大质因子
我们差分一下就变成求两个前缀和信息了
按照套路,我们考虑 S(i,j) 表示小于等于 i 的数内,所有最小质因子小于等于 p[j] 的次大质因子的前缀和
然后我们考虑将所有数分为合数与质数,那么质数的次大质因子为 0 ,无贡献
至于合数就是枚举它的最小质因子,那么枚举到 pk (k>=j)时,我们有两种情况:
- 当前的 pk 是次大质因子,那么最大质因子可能为 pk~ \(\lfloor {i\over p_k^{~e}} \rfloor\) 内任意的质数(e 满足: \(p_k^{e+1}<=i\))的可能 ,所以加上贡献这个范围内质数个数的贡献
- 当前 pk 不是次大质因子,那么我们加上 \(S({i\over p_k^{~e}},k+1)\) 即可
//by Judge
#include<bits/stdc++.h>
#define fp(i,a,b) for(register int i=(a),I=(b)+1;i<I;++i)
#define ll long long
using namespace std;
const int M=8e5+3;
typedef ll arr[M];
ll L,R,m,tot,blo; arr v,p,w,g,id1,id2;
inline void prep(int n){
for(int i=2;i<=n;++i){ if(!v[i]) p[++tot]=i;
for(int j=1;j<=tot&&p[j]*i<=n;++j)
{v[i*p[j]]=1; if(!(i%p[j])) break;}
}
}
inline ll S(ll n,ll x,int y){
if(x<=1||p[y]>x) return 0;
int k=x<=blo?id1[x]:id2[n/x]; ll res=0;
for(int i=y;i<=tot&&1ll*p[i]*p[i]<=x;++i){
ll t1=p[i],t2=t1*t1;
for(int e=1;t2<=x;++e,t1=t2,t2*=p[i]){
int k=x/t1<=blo?id1[x/t1]:id2[n/(x/t1)];
res+=S(n,x/t1,i+1)+p[i]*(g[k]-i+1);
}
} return res;
}
inline ll solv(ll n){ tot=m=0,prep(blo=sqrt(n)); // g 里存质因子个数的前缀和
for(ll l=1,r;l<=n;l=r+1) r=n/(n/l),w[++m]=n/l,g[m]=w[m]-1,
(w[m]<=blo)? id1[w[m]]=m:id2[n/w[m]]=m;
fp(j,1,tot) for(int i=1,k;1ll*p[j]*p[j]<=w[i]&&i<=m;++i)
k=w[i]/p[j]<=blo?id1[w[i]/p[j]]:id2[n/(w[i]/p[j])],g[i]-=g[k]-j+1;
return S(n,n,1);
}
int main(){ cin>>L>>R,cout<<solv(R)-solv(L-1); return 0; }
UR#13 SRAND的更多相关文章
- UR #13 Ernd
考试的时候没有注意到可以将(a,b)放在二维平面上之后旋转坐标系,使得转移变成树状数组二维偏序 这样就算我想出来了第二个转移的斜率优化也没有什么卵用啊(摔西瓜 设g(i)表示当前站在第i个水果下面且第 ...
- UR #13 Yist
第一次打UR,打了一个半小时就弃疗了QAQ 这是我唯一一道考试的时候做出来的题目,其他两道连暴力都懒得写了 很容易发现对于每个要删除的点 我们找到左边第一个比他小的不用删除的点,右边第一个比他小的不用 ...
- uoj#188. 【UR #13】Sanrd(Min_25筛)
题面 传送门 题解 这是一道语文题 不难看出,题目所求即为\(l\)到\(r\)中每个数的次大质因子 我们考虑\(Min\_25\)筛的过程,设 \[S(n,j)=\sum_{i=1}^nsec_p( ...
- uoj#187. 【UR #13】Ernd
http://uoj.ac/problem/187 每个点只能从时间,b+a,b-a三维都不大于它的点转移过来,将点按时间分成尽量少的一些段,每段内三维同时非严格单调,每段内的点可能因为连续选一段而产 ...
- UOJ 188 【UR #13】Sanrd——min_25筛
题目:http://uoj.ac/problem/188 令 \( s(n,j)=\sum\limits_{i=1}^{n}[min_i>=p_j]f(j) \) ,其中 \( min_i \) ...
- UOJ #188. 【UR #13】Sanrd
Description 给定 \(\sum_{i=l}^r f[i]\) \(f[i]=\) 把 \(i\) 的每一个质因子都从小到大排列成一个序列(\(p_i^{c_i}\)要出现 \(c_i\) ...
- UOJ188. 【UR #13】Sanrd
传送门 Sol 设 \(f_i\) 表示 \(i\) 的次大质因子 题目就是要求 \[\sum_{i=l}^{r}f_i\] 考虑求 \(\sum_{i=1}^{n}f_i\) 所求的东西和质因子有关 ...
- 「uoj#188. 【UR #13】Sanrd」
题目 不是很能看懂题意,其实就是求\([l,r]\)区间内所有数的次大质因子的和 这可真是看起来有点鬼畜啊 这显然不是一个积性函数啊,不要考虑什么特殊的函数了 我们考虑Min_25筛的过程 设\(S( ...
- UOJ188. 【UR #13】Sanrd [min_25筛]
传送门 思路 也可以算是一个板题了吧qwq 考虑min_25筛最后递归(也就是DP)的过程,要枚举当前最小的质因子是多少. 那么可以分类讨论,考虑现在这个质因子是否就是次大质因子. 如果不是,那么就是 ...
随机推荐
- linux chmod命令使用
chmod:更改文件9个属性 Linux文件属性有两种设置方法,一种是数字,一种是符号. Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/wri ...
- ACM-ICPC 2018 南京赛区网络预赛 C GDY(模拟)
https://nanti.jisuanke.com/t/30992 题意 把m张牌(牌上数字范围是1-13)放到栈里n个人,每个人首次从栈顶取5张牌,轮流取取完牌后,第1个人出他手里最小的牌,然后2 ...
- ZOJ - 3261 Connections in Galaxy War(并查集删边)
https://cn.vjudge.net/problem/ZOJ-3261 题意 银河系各大星球之间有不同的能量值, 并且他们之间互相有通道连接起来,可以用来传递信息,这样一旦有星球被怪兽攻击,便可 ...
- vue 组件数据传递
vue组件化开发 主要为了把一个大功能拆分成若干个小的功能,解决高耦合问题,同时也方便开发人员维护. 从功能上组件可以分为木偶组件和功能组件. 木偶组件(为了接收数据,渲染数据,基本上是没有逻辑的 ...
- Node.js学习入门
Node.js是什么 Node.js是一个可以允许我们在服务器端运行JavaScript代码的程序. 这是什么意思呢?通常,我们写的JavaScript代码都是在浏览器中运行的. 实际上,浏览器就是一 ...
- content-type: application/json没有设置导致的500错误
$.ajax({ url:'http://xxx.test', type: 'Post', data: JSON.stringify(model), dataType: 'json', content ...
- Java字符串格式化输入
两种方式 System.out.println(MessageFormat.format("{0}-{1}",1,2)); System.out.println(String.fo ...
- PDO和MySQLi区别与选择?
当用PHP访问数据库时,除了PHP自带的数据库驱动,我们一般还有两种比较好的选择:PDO和MySQLi.在实际开发过程中要决定选择哪一种首先要对二者有一个比较全面的了解.本文就针对他们的不同点进行分析 ...
- python 爬虫得到网页的图片
import urllib.request,os import re # 获取html 中的内容 def getHtml(url): page=urllib.request.urlopen(url) ...
- delegate事件委托
下面举个例子 我们希望通过点击使得点击的li标签变红 <body style="height:2000px;"> <ul> <li>1111&l ...