SP20173题解
膜拜 rqy。
题意:
求:
\]
首先我们知道 \(\sigma_0((p^k)^2)=2 \times k + 1=k+(k+1)=\sigma_0(p^k)+\sigma_0(p^{k-1})=(\mu^2 * \sigma_0)(p^k)\)
那么我们大力展开:
\]
\]
众所周知 \(\sum_{i=1}^n \sigma_0(i)=\sum_{i=1}^n \lfloor \frac n i \rfloor,\sum_{i=1}^n\mu^2(i)=\sum_{i=1}^{\sqrt n}\mu(i)\lfloor \frac n {i^2} \rfloor\),那么这里再使用杜教筛的数据分治即可做到 \(O(n^{\frac 2 3}+Tn^{\frac 2 3})\)。
稍微卡下常数就能 11.53s 了。实际上容易发现瓶颈其实是线性筛。。。
#include<unordered_map>
#include<cstdio>
#include<bitset>
#include<cmath>
typedef unsigned ui;
typedef __uint128_t L;
typedef unsigned long long ull;
const ui M=1e8+5;
ui T,lim,d[M],s[M];ui top,pri[5761456];ull n[10005];std::bitset<M>vis,mu1,mu2;
std::unordered_map<ull,ull>s1,d1;
struct FastDiv{
ull b,m;
FastDiv(const ull&x=1):b(x),m(ull((L(1)<<64)/x)){}
friend inline ull operator/(const ull&a,const FastDiv&mod){
if(mod.b==1)return a;ull r=1+(L(mod.m)*a>>64);return r-(a-r*mod.b>>63);
}
}F[1000005],G[1000005];
inline void sieve(const ui&n){
ui i,j,x;d[1]=1;vis[1]=1;mu1[1]=1;
for(i=1;i<=1000001;++i)F[i]=FastDiv(i),G[i]=FastDiv(1ull*i*i);
for(i=2;i<=n;++i){
if(!vis[i])mu2[pri[++top]=i]=true,d[i]=s[i]=2;
for(j=1;j<=top&&(x=i*pri[j])<=n;++j){
if(vis[x]=true,!(i%pri[j])){
d[x]=ui(d[i]/F[s[i]])*(s[x]=s[i]+1);break;
}
d[x]=d[i]<<1;s[x]=2;(mu1[i]||mu2[i])&&(mu1[x]=mu1[i]^1,mu2[x]=mu2[i]^1);
}
}
for(i=1;i<=n;++i)s[i]=mu1[i]||mu2[i],s[i]+=s[i-1],d[i]+=d[i-1];
}
inline ull S(const ull&n){
if(n<lim)return d[n];if(d1.find(n)!=d1.end())return d1[n];
ui i;ull ans(0);for(i=1;1ull*i*i<=n;++i)ans+=n/F[i];return--i,d1[n]=(ans<<1)-1ull*i*i;
}
inline ull Sum(const ull&n){
if(n<lim)return s[n];if(s1.find(n)!=s1.end())return s1[n];ui i;ull ans(0);
for(i=1;1ull*i*i<=n;++i)mu1[i]&&(ans+=n/G[i]),mu2[i]&&(ans-=n/G[i]);return s1[n]=ans;
}
inline ull Solve(const ull&n){
ull L,R,ans(0);ui x;
for(L=1;1ull*lim*L<=n;++L)if(mu1[L]||mu2[L])ans+=S(n/F[L]);
for(;1ull*L*L<=n;++L)if(mu1[L]||mu2[L])ans+=d[n/F[L]];
for(x=n/F[L];L<=n;L=R+1)1ull*x*L>n&&--x,ans+=d[x]*(Sum(R=n/F[x])-Sum(L-1));
return ans;
}
signed main(){
ull mx(0);scanf("%u",&T);for(ui i=1;i<=T;++i)scanf("%llu",n+i),n[i]>mx&&(mx=n[i]);sieve(lim=pow(mx,2./3));
for(ui i=1;i<=T;++i)printf("%llu\n",Solve(n[i]));
}
SP20173题解的更多相关文章
- 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 & ...
随机推荐
- Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.2:test (default-test) on project gulimall-common: There are test failures.
对Maven打包时碰见的问题: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.2:test (d ...
- An incompatible version 1.1.1 of the APR based Apache Tomcat Native library is installed, while Tomcat requires version 1.1.17
[问题现象]: 启动Tomcat时报如下类似错误信息: An incompatible version 1.1.12 of the APR based Apache Tomcat Native lib ...
- C快速指南
https://seleniumhq.github.io/docs/quick.html QUICK TOUR Selenium is not just one tool or API but it ...
- 系统C盘空间严重的不足的几个清理方法
大家在电脑使用久了以后,往往会遇到C盘空间不足的问题,这很可能进一步导致磁盘空间不足,软件无法正常运行,甚至电脑严重卡顿等问题. 下面给大家分享一些我自己在C盘空间不足过程中搜集的一些清理C盘空间的实 ...
- 从观察者设计模式的角度理解Zookeeper中的Watcher
前面关于Zookeeper提供的API中,可以观察到大部分接口参数似乎都是用了Wathcerz这个接口.这个在观察者模式中略有涉及,本文重点分析从观察者模式的角度分析该接口. 首先上该接口的UML图: ...
- Spring 配置概述
理解了IoC的概念,那Spring框架是如何具体操作的呢?Spring IoC容器(ApplicaitonContext)负责创建Bean,并通过容器将功能类Bean注入到其他需要的Bean中.Spr ...
- C#帕斯卡命名法
帕斯卡命名法 命名规则. 单字之间不以空格断开或 连接号 (-).底线(_)连结,第一个单词首字母采用 大写字母 :后续单词的首字母亦用大写字母,例如:FirstName.LastName.. 每一个 ...
- idea maven: invalid class root
maven导入依赖没有问题,但是项目lib的类飘红,实际导入的类中有一些没有,这是idea的问题,重启idea,发现需要重新导入项目,重新导入后问题解决. 原因:可能之前误删了项目中idea的一些文件 ...
- navicat12.0.24安装注意事项
关闭防火墙并断网,或者不要改变安装路径,或者换一个注册机 链接:https://pan.baidu.com/s/1AvEuD6TWGOCisSctF7pcbg 提取码:o4wp
- Java课程设计---数据库工具类
接下来看看传统的查询方式(一个完整的查询) package com.java.mysql; import java.sql.Connection; import java.sql.DriverMana ...