您的位置:首页 > 其它

[BZOJ2005][Noi2010]能量采集

2015-07-19 23:57 211 查看
原题地址

网上题解太高端OLZ…

自(luan)己(gao)想(gao)出了一个做法,具体看代码囧…

关于该做法时间复杂度的分析…

拓展一个调和数列近似公式(别问我是什么我也不知道OLZ):

当n很大时

∑ni=11i≈lnn+γ

(其中γ是Euler常数,γ≈0.57)

AC code:

#include <cstdio>
typedef long long ll;
const ll N=100010;
ll n,m,ans;
ll f
;

int main(){
scanf("%lld%lld",&n,&m);
if(n>m){ll t=n;n=m;m=t;}
f
=m/n;
for(ll i=n-1;i>=1;i--){
f[i]=(n/i)*(m/i);
for(ll j=2;i*j<=n;j++) f[i]-=f[i*j];
}
for(ll i=1;i<=n;i++) ans+=(f[i]*(i-1))<<1;
ans+=n*m;
printf("%lld",ans);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: