题目

不是很能看懂题意,其实就是求\([l,r]\)区间内所有数的次大质因子的和

这可真是看起来有点鬼畜啊

这显然不是一个积性函数啊,不要考虑什么特殊的函数了

我们考虑Min_25筛的过程

设\(S(x,y)\)表示\([1,x]\)内的数满足\(minp(i)>=y\)的数的次大质因子的和

还是分成质数合数以及\(1\)来考虑\(S(x,y)\)

质数和\(1\)都没什么贡献,直接考虑合数

还是枚举最小质因子\(P_k\)以及其出现次数\(e\)

考虑从\(S(\frac{x}{P_k^e},k+1)\)到\(S(x,y)\)如何转移

我们在这里需要计算次大质因子为\(P_k\)的数的贡献

首先这些数得有一个比\(P_k\)大的质因子,同时还得满足比\(P_k\)大的质因子只出现了一次

这样的数除以\(P_k\)的突出特点就是变成了一个质数,而且这个质数大于\(P_k\)

所以我们只需要知道\(\frac{x}{P_k^e}\)内的质数个数就好了

设\(f(i)=\sum_{j=1}^i[j\in P]\)

转移就是

\[S(x,y)=\sum_{k=y}^{P_k^2<=x}\sum_{e=1}^{P_k^e<=x}S(\frac{x}{P_k^e},k+1)+max(0,f(\frac{x}{P_k^e})-k+1)\times P_k
\]

减\(k-1\)是排除掉小于\(P_k\)的质数

最后的答案就是\(S(r,1)-S(l-1,1)\)

代码

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#define maxn 1000005
#define re register
#define LL long long
inline LL M(LL x) {return x>0?x:0;}
inline int read()
{
char c=getchar();int x=0;while(c<'0'||c>'9') c=getchar();
while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+c-48,c=getchar();return x;
}
LL L,R,Sqr;
LL n,m,w[maxn],tot;
LL p[maxn],g[maxn],id1[maxn],id2[maxn];
int f[maxn];
inline LL S(LL x,int y) {
if(x<=1&&p[y]>x) return 0;
int t=(x<=Sqr)?id1[x]:id2[n/x];
LL ans=0;
for(re int k=y;k<=tot&&p[k]*p[k]<=x;k++) {
LL p1=p[k];
for(re int e=1;p1<=x;e++,p1*=p[k])
ans+=S(x/p1,k+1)+M(g[(x/p1<=Sqr)?id1[x/p1]:id2[n/(x/p1)]]-k+1)*p[k];
}
return ans;
}
inline LL calc(LL T) {
if(T<=1) return 0;n=T;
Sqr=std::sqrt(n)+1;m=0;memset(g,0,sizeof(g));
for(re LL l=1,r;l<=n;l=r+1) {
r=n/(n/l);w[++m]=n/l;
if(w[m]<=Sqr) id1[w[m]]=m;else id2[n/w[m]]=m;
g[m]=w[m]-1;
}
for(re int j=1;j<=tot&&p[j]*p[j]<=n;j++)
for(re int i=1;i<=m&&p[j]*p[j]<=w[i];i++) {
int k=(w[i]/p[j]<=Sqr)?id1[w[i]/p[j]]:id2[n/(w[i]/p[j])];
g[i]=g[i]-g[k]+j-1;
}
return S(n,1);
}
int main()
{
scanf("%lld%lld",&L,&R);Sqr=std::sqrt(R)+1;
for(re int i=2;i<=Sqr;i++) {
if(!f[i]) p[++tot]=i;
for(re int j=1;j<=tot&&p[j]*i<=Sqr;j++) {
f[p[j]*i]=1;if(i%p[j]==0) break;
}
}
printf("%lld\n",calc(R)-calc(L-1));
return 0;
}

「uoj#188. 【UR #13】Sanrd」的更多相关文章

  1. 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 \) ...

  2. uoj#188. 【UR #13】Sanrd(Min_25筛)

    题面 传送门 题解 这是一道语文题 不难看出,题目所求即为\(l\)到\(r\)中每个数的次大质因子 我们考虑\(Min\_25\)筛的过程,设 \[S(n,j)=\sum_{i=1}^nsec_p( ...

  3. UOJ #188. 【UR #13】Sanrd

    Description 给定 \(\sum_{i=l}^r f[i]\) \(f[i]=\) 把 \(i\) 的每一个质因子都从小到大排列成一个序列(\(p_i^{c_i}\)要出现 \(c_i\) ...

  4. uoj#187. 【UR #13】Ernd

    http://uoj.ac/problem/187 每个点只能从时间,b+a,b-a三维都不大于它的点转移过来,将点按时间分成尽量少的一些段,每段内三维同时非严格单调,每段内的点可能因为连续选一段而产 ...

  5. UOJ188. 【UR #13】Sanrd

    传送门 Sol 设 \(f_i\) 表示 \(i\) 的次大质因子 题目就是要求 \[\sum_{i=l}^{r}f_i\] 考虑求 \(\sum_{i=1}^{n}f_i\) 所求的东西和质因子有关 ...

  6. UOJ188. 【UR #13】Sanrd [min_25筛]

    传送门 思路 也可以算是一个板题了吧qwq 考虑min_25筛最后递归(也就是DP)的过程,要枚举当前最小的质因子是多少. 那么可以分类讨论,考虑现在这个质因子是否就是次大质因子. 如果不是,那么就是 ...

  7. uoj#186 【UR #13】Yist

    题目 orz myy 首先注意到答案有单调性,于是我们可以考虑二分一个\(x\),之后去判断一下每次只使用长度为\(x\)的区间能否删出目标序列 显然我们应该贪心地删除需要删除元素中最小的那一个,感性 ...

  8. UOJ 241. 【UR #16】破坏发射台 [矩阵乘法]

    UOJ 241. [UR #16]破坏发射台 题意:长度为 n 的环,每个点染色,有 m 种颜色,要求相邻相对不能同色,求方案数.(定义两个点相对为去掉这两个点后环能被分成相同大小的两段) 只想到一个 ...

  9. uoj #118. 【UR #8】赴京赶考 水题

    #118. [UR #8]赴京赶考 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/118 Description ...

随机推荐

  1. Centos7 部署.netCore2.0项目

    最近在学习.netCore2.0,学习了在Centos上部署.netCore的方法,中间遇到过坑,特意贴出来供大家分享,在此我只是简单的在CentOS上运行.NETCore网站,没有运用到nginx等 ...

  2. VMware Workstation 12激活码

    VMware Workstation 12 Pro key/注册码: VY1DU-2VXDH-08DVQ-PXZQZ-P2KV8 VF58R-28D9P-0882Z-5GX7G-NPUTF YG7XR ...

  3. [android] 切换界面的通用处理

    实现不改变activity,只切换View 抽取View界面的基类 利用面向对象多态的思路,实现通用 TitleManager.java 管理标题 package com.tsh.lottery.vi ...

  4. redis(4)事务

    一.事务 一般来说,事务必须满足4个条件,也就是我们常说的ACID: 1)Atomicity 原子性:一个事务中的所有操作要么全部完成,要么全部不完成,不会结束在中间的某个环节.事务在执行过程中发生错 ...

  5. 基于easyUI实现权限管理系统(二)——菜单导航

    此文章是基于 EasyUI+Knockout实现经典表单的查看.编辑 一. 相关文件介绍 1. menu.jsp:菜单导航主界面 <!DOCTYPE html PUBLIC "-//W ...

  6. hibernate下Session的获取方式

    Session是应用程序与数据库之间的一个会话,其重要性不言而喻.初学Hibernate,使用SessionFactory,老老实实地打开事务,提交,回滚,关闭session. 1.直接通过Sessi ...

  7. ssh和scp详解

    一.SSH客户端使用 使用ssh客户端远程登陆到指定的计算机: $ ssh {user}@{remote} -o IdentityFile=/home/id_rsa -o StrictHostKeyC ...

  8. JavaScript的重载(通过argument.length)

    偶然间在博客园看到的关于js的重载(重载就是一组具有相同名字.不同参数列表,实现不同操作的函数或方法)问题,作为初学者,在看红宝书的时候,记得书中有概念说明js是没有重载的 所以,觉得有必要把这一段 ...

  9. 浮动属性(float)

    (1.浮动是一种脱离标准文档流的形式. 作用:浮动就是用来制作多个盒子并排显示,也能设置宽高,负责网页排版 1 float:left;  左浮动 2 float:right; 右浮动 3 float: ...

  10. 基于容器微服务的PaaS云平台设计(一) 实现容器微服务和持续集成

    版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://www.cnblogs.com/SuperXJ/ 前言:关于什么是容器微服务PaaS和容器微服务PaaS的 ...