是的,这是一篇使用 min25 筛的题解。。。

本题解参考command_block大佬的博客,代码是对其在 LOJ 上的提交卡常后写出来的。

ML 板子把数据开到 \(10^{13}\) 速度还和供题人的 ML 速度差不多快就离谱。。。好吧我吸了氧

这个板子的原理是使用树状数组优化的 min25 筛,在下面会详细讲解。复杂度是 \(O((\frac n {\log n})^{\frac 2 3})\) 的。

首先有经典 DP:

\[G(n,k)=G(n,k-1)-G(\frac n {pri_k},k-1)+G(pri_{k-1},k-1))
\]

边界条件为:

\[G(n,0)=n
\]

根据积分,可以得到朴素的 DP 是 \(O(\frac {n^{\frac 3 4}} {\log n})\) 的。接下来尝试使用树状数组维护对于 \(n\) 过小时的 \(G\)。

设分治线为 \(B1\)。对 \(B1\) 一下的所有 \(G\) 使用树状数组维护,对于 \(B1\) 以上的 \(G\) 使用 DP。

这一部分的复杂度为 \(O(B1\log B1+\frac n {\sqrt{B1}\log n})\),取 \(B1=\frac {n^{\frac 2 3}} {\log^{\frac 4 3} n}\) 可以得到复杂度为 \(O(\frac {n^{\frac 2 3}} {\log^{\frac 1 3} n})\)。

继续分治,令 \(B2\) 以下的部分暴力统计。

当 \(B2=\sqrt [6] n\) 时,复杂度为 \(O(n^{\frac 2 3}\log n+\frac n {\sqrt{B1}\log n}+B1)\),取 \(B1=(\frac n {\log n})^{\frac 2 3}\) 可以得到复杂度为 \(O((\frac n {\log n})^{\frac 2 3})\)。

复杂度的具体推导可以看 blog。笔者看不懂于是懒得解释直接贺代码了

//感谢@command_block的板子
#include<cstdio>
#include<cmath>
const int M=3e7,Lim=8.5e7+10;
typedef unsigned long long ull;
int l2,tot,lim,BIT[Lim];
ull n,g[M],w[M];
double inv[M];
bool e[Lim];
inline ull min(const ull&a,const ull&b){
return a>b?b:a;
}
inline ull max(const ull&a,const ull&b){
return a>b?a:b;
}
inline void Add(int x){
e[x]=1;
while(x<=lim)++BIT[x],x+=x&-x;
}
inline ull Query(int x){
ull sum=x;
while(x)sum-=BIT[x],x^=x&-x;
return sum;
}
signed main(){
register int i,j,tl,tl2,tl3;
register ull t,r,x0;
scanf("%llu",&n);
lim=min(max(max((pow(n/log2(n),0.66)),l2=sqrtl(n)+1),10000),n);
for(i=1;i<=l2;i++)w[i]=i-1,inv[i]=1./i;
for(tot=1;1ull*lim*tot<n;tot++)g[tot]=n*inv[tot]+1e-6-1;
--tot;Add(1);
for(i=2;1ull*i*i<=n;i++){
if(e[i])continue;
x0=w[i-1];t=n/i;r=1ull*i*i;
tl=min(n/r,(ull)tot);tl2=min(tl,n/(1ull*l2*i));tl3=min(tl2,tot/i);
for(j=1;j<=tl3;++j)g[j]-=g[j*i]-x0;
for(j=tl3+1;j<=tl2;j++)g[j]-=Query(t*inv[j]+1e-6)-x0;
for(j=tl2+1;j<=tl;++j)g[j]-=w[int(t*inv[j]+1e-6)]-x0;
for(j=l2;j>=r;--j)w[j]-=w[int(j*inv[i]+1e-6)]-x0;
if(1ull*i*i<=lim){
for(j=i*i;j<=lim;j+=i)if(!e[j])Add(j);
}
}
if(!tot)g[1]=Query(n);
printf("%llu",g[1]);
}

LGP7884题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. 深度学习:多层感知机和异或问题(Pytorch实现)

    感知机模型 假设输入空间\(\mathcal{X}\subseteq \textbf{R}^n\),输出空间是\(\mathcal{Y}=\{-1,+1\}\).输入\(\textbf{x}\in \ ...

  2. 《PHP程序员面试笔试宝典》——如何回答算法设计问题?

    如何巧妙地回答面试官的问题? 本文摘自<PHP程序员面试笔试宝典> 程序员面试中的很多算法设计问题,都是历年来各家企业的"炒现饭",不管求职者以前对算法知识掌握得是否扎 ...

  3. kubernetes之数据管理

    volume emptyDir [machangwei@mcwk8s-master ~]$ kubectl apply -f mcwVolume1.yml #部署emptydir pod/produc ...

  4. suse 12 二进制部署 Kubernetets 1.19.7 - 第09章 - 部署kubelet组件

    文章目录 1.9.部署kubelet 1.9.0.创建kubelet bootstrap kubeconfig文件 1.9.1.创建kubelet配置文件 1.9.2.配置kubelet为system ...

  5. 关于WebStorm-React-Native 代码提示安装方法

    声明 本方法 为网上好心人提供  我提供整理 插件名称:Webstrom live template 安装方法一:1.打开终端输入 git clone https://github.com/virto ...

  6. iceberg合并小文件冲突测试

    基于iceberg的master分支的9b6b5e0d2(2022-2-9). 参数说明 1.PARTIAL_PROGRESS_ENABLED(partial-progress.enabled) 默认 ...

  7. ApplicationStartedEvent与ContextStartedEvent有区别吗?

    大家好,我是DD! 今天跟大家聊聊这个问题:ApplicationStartedEvent与ContextStartedEvent有区别吗? 对了,最近花了几周时间,把SpringForAll社区 3 ...

  8. Centos6/7系统基础配置-从零到无

    转至:https://www.cnblogs.com/Pigs-Will-Fly/p/13855300.html 目录 前言 系统配置 文档作用 一.Centos 6.X 系列配置 1.1  主机名 ...

  9. idea教程--使用maven创建web项目

    1.单击create new project 2.运行maven项目 在pom.xml文件中添加tomcat插件然后如下图运行;

  10. startActivityForResult跳转后回调数据

    从AActivity向BActivity跳转后,关闭BActivity并向AActivity回调一些数据: 建立AActivity.java文件: 1 public class AActivity e ...