这种板子题怎么能没有min25筛的题解呢???

题意:给定一个完全和性函数,求其前缀和。其实普通和性函数也能做就是了

\[\sum_{i=1}^n f(i)
\]

类似积性函数,我们把这玩意儿在质数幂处的值之和

\[\sum_{i=1}^n \sum_{p^k|i,[\gcd(p^{k+1},i)=p^k]}kf(p)
\]
\[\sum_pf(p)g(n,p)
\]

其中 \(g(n,p)\) 为 \(\sum_{i=1}^n \sum_k k[p^k|i \And gcd(p^{k+1},i)=p^k]\)。

一个很明显的结论是 \(g(n,p)=n<p?g(\lfloor \frac n p \rfloor,p)+\lfloor \frac n p \rfloor\)。

根号分治一下。当 \(n < p^2\) 时, \(g(n,p)=\lfloor \frac n p \rfloor\)。

于是:

\[\sum_p^{\sqrt n}f(p)g(p)+\sum_{i=\sqrt n+1}^n \lfloor \frac n i \rfloor [\text {i is prime}]f(i)
\]

后者相当于对于 \([1,\sqrt n]\) 中的 \(x\) 求 \(\sum_{i=1}^{\lfloor \frac n x \rfloor}f(p)\)。因为 \(f\) 是一个多项式,所以我们相当于需要求出 \(\sum_p^{\lfloor \frac n x \rfloor} p^k\)。

时间复杂度 $O(\frac {n^{\frac 3 4} } {\log n}) $,空间复杂度 $ O(\sqrt n)$。

但是 \(n \leq 3 \times 10^8\),而 \(\sum_{i=1}^n n^2=\frac {n(n+1)(2n+1)} 6\),\(6\) 在模 \(2^{32}\) 的意义下没有逆元,而 \(n^3\) 破了 \(2e25\),该怎么计算呢?

有一种办法是计算 \(3\) 在模 \(2^{32}\) 意义下的逆元,另一种办法是对 \(n\%3\) 的情况进行分类讨论。

这份代码在 CF 上面是 rk2,因为 rk1 是一个不讲武德的特判数据的人。。。

#include<cstdio>
#include<cmath>
typedef unsigned uint;
const uint M=17325;
uint pri[2000],p1[2000],p2[2000],p3[2000],s1[2000],s2[2000],s3[2000];
uint n,S,A,B,C,D,ans,top,id1[M],id2[M],pos[M];double invp[2000];
uint g0[M<<1],g1[M<<1],g2[M<<1],g3[M<<1];
inline uint f(const uint&n,const uint&p,const double&invp){
return n<p?0:f(n*invp,p,invp)+(uint)(n*invp);
}
inline void Get(const uint&x,const uint&n){
g0[x]=n;g1[x]=n*(n+1ull)/2;g3[x]=g1[x]*g1[x];
g2[x]=n%3==1?g1[x]*(2ull*n+1)/3:((uint)(n*(n+1ull)/6))*(2ull*n+1);
--g0[x];--g1[x];--g2[x];--g3[x];
}
inline void sieve(){
register uint i,j,x;Get(1,n);
for(i=2;i<=S;++i){
Get(i,n/i);
if(!pos[i]){
pri[++top]=i;invp[top]=1./i+1e-15;pos[i]=top;
s1[top]=s1[top-1]+(p1[top]=pri[top]);
s2[top]=s2[top-1]+(p2[top]=pri[top]*p1[top]);
s3[top]=s3[top-1]+(p3[top]=pri[top]*p2[top]);
ans+=(A*p3[top]+B*p2[top]+C*p1[top]+D)*f(n,i,1./i+1e-15);
}
for(j=1;j<=top&&(x=i*pri[j])<=S;++j)if((pos[x]=j)==pos[i])break;
}
for(i=1;i<S;++i)Get(S+i,i);
if(S*S!=n)Get(S<<1,i);
}
signed main(){
register uint i,j,x,f,P1,P2,P3,S1,S2,S3;
scanf("%u%u%u%u%u",&n,&A,&B,&C,&D);S=sqrt(n);f=S*S==n;sieve();
for(i=1;i<=top;++i){
P1=p1[i];P2=p2[i];P3=p3[i];S1=s1[i-1];S2=s2[i-1];S3=s3[i-1];
for(j=1;(x=pri[i]*j)<=S;++j){
g0[j]+=i-1-g0[x];
g1[j]+=P1*(S1-g1[x]);
g2[j]+=P2*(S2-g2[x]);
g3[j]+=P3*(S3-g3[x]);
}
for(;pri[i]*(x=pri[i]*j)<=n&&j<=S;++j){
x=n/x;
g0[j]+=i-1-g0[S+x];
g1[j]+=P1*(S1-g1[S+x]);
g2[j]+=P2*(S2-g2[S+x]);
g3[j]+=P3*(S3-g3[S+x]);
}
for(j=S-f;pri[i]*pri[i]<=j;--j){
x=j*invp[i];
g0[S+j]+=i-1-g0[S+x];
g1[S+j]+=P1*(S1-g1[S+x]);
g2[S+j]+=P2*(S2-g2[S+x]);
g3[S+j]+=P3*(S3-g3[S+x]);
}
}
g0[S+1]=top;g1[S+1]=s1[top];g2[S+1]=s2[top];g3[S+1]=s3[top];
for(i=1;i<=S;++i){
g3[i]-=g3[i+1];g2[i]-=g2[i+1];g1[i]-=g1[i+1];g0[i]-=g0[i+1];
ans+=i*(A*g3[i]+B*g2[i]+C*g1[i]+D*g0[i]);
}
printf("%u",ans);
}

CF1017F题解的更多相关文章

  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. Linux开机显示模式切换

    修改vim /etc/inittab 默认为5-图形界面模式,改为3-多用户模式即可 # Default runlevel. The runlevels used are: # 0 - halt (D ...

  2. Category基本概念

    1.什么是Category Category有很多种翻译: 分类 \ 类别 \ 类目 (一般叫分类) Category是OC特有的语法, 其他语言没有的语法 Category的作用 可以在不修改原来类 ...

  3. ARC快速入门

    1.ARC机制判断 iOS5以后,创建项目默认的都是ARC ARC机制下有几个明显的标志: 不允许调用对象的 release方法 不允许调用 autorelease方法 再重写父类的dealloc方法 ...

  4. 简单实现UITableView索引功能(中英文首字母索引) (二) By HL

    简单实现UITableView索引功能(中英文首字母索引)(一) ByH罗 相关类: NSString+PinYing(获取中英文首字母)   参考上面链接 #import "ViewCon ...

  5. 部署YUM仓库及NFS共享服务

    部署YUM仓库及NFS共享服务 目录 部署YUM仓库及NFS共享服务 一.YUM仓库服务 1. YUM概述 2. 部署YUM软件仓库 (1)准备安装源 ①YUM仓库的种类 ②RPM软件包的来源 ③构建 ...

  6. 剑指Offer系列_30_包含min函数的栈

    以空间换时间: package leetcode.sword_to_offfer.day01; import java.util.Stack; /** * 定义栈的数据结构,请在该类型中实现一个能够得 ...

  7. 我是如何破解你的WINDOWS密码的 ?(1)

    我是如何破解你的WINDOWS密码的 ?(1) 密码可以看作我们主要,甚至某些情况下唯一可用于防范入侵的防线.就算入侵者无法在物理上接触到计算机,对于对外的Web应用,他们依然可以通过远程桌面协议或身 ...

  8. suse 12 二进制部署 Kubernetets 1.19.7 - 第01章 - 创建CA证书和kubectl集群管理命令

    文章目录 1.kubernetes集群部署 1.0.创建CA证书和秘钥 1.0.0.安装cfssl工具 1.0.1.创建根证书 1.0.2.创建证书签名请求文件 1.0.3.生成CA证书和秘钥 1.0 ...

  9. JUC并发工具类之 CountDownLatch等待多线程完成

    上篇JUC同步工具之Semaphore - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)示例中,资源释放一个线程就可以退出然后另一个线程可以使用了,那如果需要所有规定数量的资源同时释放了才 ...

  10. bi报表是什么意思,有什么优势?

    ​BI也叫商业智能系统,BI报表也就是将企业中现有数据进行整合并提供出的报表,商业智能描述了一系列的概念和方法,通过应用基于事实的支持系统来辅助商业决策的制定. 商业智能技术提供使企业迅速分析数据的技 ...