hdu 6134: Battlestation Operational (2017 多校第八场 1002)【莫比乌斯】
比赛时没抓住重点,对那个受限制的“分数求和”太过关心了。。其实如果先利用莫比乌斯函数的一个性质把后面那个[gcd(i,j)=1]去掉,那么问题就可以简化很多。公式如下

这和之前做过的一道题很相似。。(见http://www.cnblogs.com/Just--Do--It/p/7326572.html)
这个式子显然是可以用分块+预处理mu[i]前缀和的方法来做。
预处理复杂度是O(n),分块解决单组询问复杂度是O(sqrt(n))
求g[n]可以用递推式来解决。
对比g[n]和g[n-1],可以发现,当i整除n-1时,n/i比(n-1)/i大1,另外,g[n]比g[n-1]多末尾一项n/n(此处“/”即向上取整的除,因为我太懒了,就不写那么标准了。。),由此可以找到规律,g[n]=g[n-1]+d[n-1]+1。(很巧,那道题也用到了d[n])
代码如下
#include<bits/stdc++.h>
using namespace std;
typedef long long LL; const int mod=1e9+;
const int maxn=1e6+;
int prime[maxn+];
bool check[maxn+];
int d[maxn+];
int mu[maxn+];
int sum[maxn+];
int min_prime_cnt[maxn+];
int g[maxn+]; void init()
{
mu[]=,d[]=;
int tot=;
for(int i=; i<=maxn; i++)
{
if(!check[i])
{
prime[tot++]=i;
mu[i]=-;
min_prime_cnt[i]=;
d[i]=;
}
for(int j=; j<tot; j++)
{
int t=i*prime[j];
if(t>maxn) break;
check[t]=true;
if(i%prime[j]==)
{
mu[t]=;
min_prime_cnt[t]=min_prime_cnt[i]+;
d[t]=d[i]/(min_prime_cnt[i]+)*(min_prime_cnt[t]+);
break;
}
else
{
mu[t]=-mu[i];
d[t]=d[i]*;
min_prime_cnt[t]=;
}
}
}
g[]=;
for(int i=;i<=maxn;i++) g[i]=(g[i-]+d[i-]+)%mod;
for(int i=;i<=maxn;i++) g[i]=(g[i]+g[i-])%mod;
for(int i=;i<=maxn;i++) sum[i]=sum[i-]+mu[i];
} int n; int main()
{
init();
while(~scanf("%d",&n))
{
LL ans=;
for(int i=, last; i<=n; i=last+)
{
last=n/(n/i);
ans=(ans+(sum[last]-sum[i-])*g[n/i])%mod;
}
printf("%lld\n",(ans+mod)%mod);
}
}
hdu 6134: Battlestation Operational (2017 多校第八场 1002)【莫比乌斯】的更多相关文章
- HDU 6134 Battlestation Operational | 2017 Multi-University Training Contest 8
破结论没听说过,上式推导到第三步的时候有了O(nlogn) 的做法(枚举倍数+1最后前缀和),并且这种做法可以直接应用到向上取整的计算中,详见forever97 但由于d(n)是积性函数,故可O(n) ...
- hdu 6143: Killer Names (2017 多校第八场 1011)
题目链接 题意,有m种颜色,给2n个位置染色,使左边n个和右边n个没有共同的颜色. 可以先递推求出恰用i种颜色染n个位置的方案数,然后枚举两边的染色数就可以了,代码很简单. #include<b ...
- hdu 6134 Battlestation Operational 莫比乌斯反演
Battlestation Operational Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- 2017多校第8场 HDU 6134 Battlestation Operational 莫比乌斯反演
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6134 题意: 解法: 那么g(n)怎么求,我们尝试打表发现g(n)是有规律的,g(n)=g(n-1)+ ...
- 2017ACM暑期多校联合训练 - Team 8 1002 HDU 6134 Battlestation Operational (数论 莫比乌斯反演)
题目链接 Problem Description The Death Star, known officially as the DS-1 Orbital Battle Station, also k ...
- HDU 6134 Battlestation Operational(莫比乌斯反演)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6134 [题目大意] 求$\sum_{i=1}^{n}{\sum_{j=1}^{i}\lceil{\ ...
- hdu 6134 Battlestation Operational (莫比乌斯反演+埃式筛)
Problem Description > The Death Star, known officially as the DS-1 Orbital Battle Station, also ...
- hdu 6127 : Hard challenge (2017 多校第七场 1008)(计算几何)
题目链接 题意:二维平面上有n个点(没有重叠,都不在原点,任意两点连线不过原点),每个点有一个权值,用一条过原点的直线把他们划分成两部分,使两部分的权值和的乘积最大.输出最大的乘积. 极角排序后,将原 ...
- 2019牛客多校第八场 F题 Flowers 计算几何+线段树
2019牛客多校第八场 F题 Flowers 先枚举出三角形内部的点D. 下面所说的旋转没有指明逆时针还是顺时针则是指逆时针旋转. 固定内部点的答案的获取 anti(A)anti(A)anti(A)或 ...
随机推荐
- 线性回归 r python 比较
w http://blog.sina.cn/dpool/blog/s/blog_70f632090101bp8u.html
- ASP Loading
ASP 页面加载等待效果.如 显示"请稍后页面正在加载...",加载完成后隐藏这个loading. <%Response.buffer=false%> <html ...
- 【Android Studio安装部署系列】十三、Android studio添加和删除Module 2
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 新建.导入.删除Module是常见的操作,这里简单介绍下. 新建Module File——New——New Module... 选中 ...
- python爬虫——爬取淘票票正在热映电影
今天正好学习了一下python的爬虫,觉得收获蛮大的,所以写一篇博客帮助想学习爬虫的伙伴们. 这里我就以一个简单地爬取淘票票正在热映电影为例,介绍一下一个爬虫的完整流程. 首先,话不多说,上干货——源 ...
- Where we love is home, home that our feet may leave, but not our hearts.
parcel.n. 包裹 endurance.n.耐力 rot.v.腐烂 ornament.n.装饰 pinch.v.捏 nationality.n.国家 sunshine.n.阳光 stagger. ...
- 关于iphone 6s 页面功能不能正常使用问题
6s 不支持es6 语法.去除es6语法后页面功能正常使用!!!!!
- [19/05/19-星期日] CSS_css的声明和选择器
一.引言 HTML的作用是负责数据的格式展示,如果使用它来搞数据的样式,则发现样式书写出来太麻烦,不易于维护: HTML可以有效组织数据的展示,但是不同类型数据在浏览器中的分布没有办法展示. HTML ...
- jquery点击来回切换
做个笔记偶尔用有时记不住 方法一: <div id="test"> test </div> $('#test').mouseover(function () ...
- Vue源码详细解析:transclude,compile,link,依赖,批处理...一网打尽,全解析!
用了Vue很久了,最近决定系统性的看看Vue的源码,相信看源码的同学不在少数,但是看的时候却发现挺有难度,Vue虽然足够精简,但是怎么说现在也有10k行的代码量了,深入进去逐行查看的时候感觉内容庞杂并 ...
- 极*Java速成教程 - (2)
Java语言基础 Java的一切都是以对象为基础,对象是生是死的生命周期由虚拟机管理,但是在创生和消亡阶段,需要我们去管理这个类怎么生,怎么死.我们也以此为契机,慢慢接触Java的诸多细节和具体实现. ...