LGP7884题解
是的,这是一篇使用 min25 筛的题解。。。
本题解参考command_block大佬的博客,代码是对其在 LOJ 上的提交卡常后写出来的。
ML 板子把数据开到 \(10^{13}\) 速度还和供题人的 ML 速度差不多快就离谱。。。好吧我吸了氧
这个板子的原理是使用树状数组优化的 min25 筛,在下面会详细讲解。复杂度是 \(O((\frac n {\log n})^{\frac 2 3})\) 的。
首先有经典 DP:
\]
边界条件为:
\]
根据积分,可以得到朴素的 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题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- centos安装php7.2
目前php最高稳定版本是7.2,wordpress中也建议采用该版本. 若直接采用centos中的yum安装:sudo yum -y install php,版本是5.4,远远不够,因此我们要手动更新 ...
- zabbix 监控系统概述及部署
zabbix 监控系统概述及部署 1.Zabbix是什么: zabbix是一个个基于web界而的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系 ...
- MySQL基本命令操作及数据库基本概念
MySQL基本命令操作及数据库基本概念 1.数据库的基本概念 2.主流数据库介绍 3.关系型非关系型数据库介绍 4.Mysql 安装方法 5.Mysql 基本操作命令 1.数据库的基本概念: 数据库的 ...
- 一个好用的多方隐私求交算法库JasonCeng/MultipartyPSI-Pro
Github链接传送:JasonCeng/MultipartyPSI-Pro 大家好,我是阿创,这是我的第29篇原创文章. 今天是一篇纯技术性文章,希望对工程狮们有所帮助. 向大家推荐一个我最近改造的 ...
- 《PHP程序员面试笔试宝典》——如何应对面试官的“激将法”语言?
如何巧妙地回答面试官的问题? 本文摘自<PHP程序员面试笔试宝典> "激将法"是面试官用以淘汰求职者的一种惯用方法,它是指面试官采用怀疑.尖锐或咄咄逼人的交流方式来对求 ...
- Jenkins项目迁移JOB
Jenkins项目迁移JOB:从旧的迁移到新的Jenkins上 北京介绍 今天由于迁移Jenkins服务器,需要完全拷贝Jenkins里的Job. 经实验,直接在服务器上移动Jobs目录下的文件即可. ...
- Kubernetes:更新与回滚
Blog:博客园 个人 除了创建,Deployment 提供的另一个重要的功能就是更新应用,这是一个比创建复杂很多的过程.想象一下在日常交付中,在线升级是一个很常见的需求,同时应该尽量保证不能因为升级 ...
- PDF太大怎么办?缩小PDF的4种常用方法
PDF太大怎么变小?我们在平时学习或生活中经常需要上传或提交一些资料,现在网站都是默认需要提交PDF格式的电子文档,有时提交资料会提示超过系统大小,如何才能使PDF缩小呢? 一.在线压缩 首先搜索sp ...
- 【面像对象编程OOP】五种设计原则 Solid
"面向对象设计五大原则"和良性依赖原则在应付变化方面的作用. SOLID(单一功能.开闭原则.里氏替换.接口隔离以及依赖反转) 单一职责原则(Single-Resposibilit ...
- 【C#表达式树 一】Expressions 命名空间 38个类 2个接口 3个枚举
注解 抽象类 Expression 提供用于为表达式树建模的类层次结构的根. 此命名空间中派生自的类 Expression (例如 MemberExpression 和 ParameterExpres ...