博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ4546(原) : 三元组
阅读量:5775 次
发布时间:2019-06-18

本文共 1647 字,大约阅读时间需要 5 分钟。

设$f(x)=\sum_{x|d}p(d)$。

则$ans=\sum_{i=1}^n\sum_{j=1}^n\sum_{k=1}^n\mu(i)\mu(j)\mu(k)f(lcm(i,j))f(lcm(i,k))f(lcm(j,k))$。

转化成图论模型,$i$到$j$有边的条件是$\mu(i)\neq0,\mu(j)\neq0,lcm(i,j)\leq n$。

枚举square-free的$\gcd$,再枚举square-free的$lcm$,然后枚举$\frac{lcm}{\gcd}$的因子$a$,那么可以得到一对满足条件的数对$(a\times\gcd,\frac{lcm}{a})$。

这样可以不重不漏地枚举出所有边,然后三元环计数即可。

时间复杂度$O(n\log n\sqrt{n\log n})$。

 

#include
#include
using namespace std;const int N=100005,M=1166760,E=760745;int n,i,j,k,x,y,z,P[N],f[N],vis[N],mu[N],p[N],tot,ans,A,B;int g[N],v[M],nxt[M],ed,d[N];inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}inline void add(int x,int y){v[++ed]=y;nxt[ed]=g[x];g[x]=ed;}namespace Triple{int g[N],v[E],w[E],nxt[E],ed,st[N],en[N],m,q[M],val[M],tmp[N];inline void add(int x,int y,int z){ if(d[x]>d[y])swap(x,y); v[++ed]=y;w[ed]=z;nxt[ed]=g[x];g[x]=ed;}void solve(){ for(i=1;i<=n;i++)if(g[i]){ st[i]=m+1; for(j=g[i];j;j=nxt[j])tmp[q[++m]=v[j]]=w[j]; en[i]=m; sort(q+st[i],q+m+1); for(j=st[i];j<=m;j++)val[j]=tmp[q[j]]; } for(i=1;i<=n;i++)for(j=g[i];j;j=nxt[j]){ k=v[j],x=st[i],y=st[k]; while(x<=en[i]&&y<=en[k])if(q[x]==q[y]){ z=q[x]; A+=mu[i]*mu[k]*mu[z]*w[j]*val[x]*val[y]; x++,y++; }else q[x]
=y)continue; d[x]++,d[y]++; B+=(mu[x]*f[y]+mu[y]*f[x])*f[j]*f[j]; } for(i=1;i<=n;i++)if(mu[i])for(j=i;j<=n;j+=i)if(mu[j]&&mu[j/i])for(k=g[j/i];k;k=nxt[k]){ x=i*v[k],y=j/v[k]; if(x>=y)continue; Triple::add(x,y,f[j]); } Triple::solve(); return printf("%d",(ans+A*6+B*3)&((1<<30)-1)),0;}

  

转载地址:http://yrhux.baihongyu.com/

你可能感兴趣的文章
Python 学习笔记 - 面向对象(特殊成员)
查看>>
Kubernetes 1.11 手动安装并启用ipvs
查看>>
Puppet 配置管理工具安装
查看>>
Bug多,也别乱来,别被Bug主导了开发
查看>>
sed 替换基础使用
查看>>
高性能的MySQL(5)创建高性能的索引一B-Tree索引
查看>>
附件3:eclipse memory analyze使用教程
查看>>
oracle备份与恢复--rman
查看>>
图片变形的抗锯齿处理方法
查看>>
Effective C++ Item 32 确保你的 public 继承模子里出来 is-a 关联
查看>>
phpstorm安装laravel-ide-helper实现自动完成、代码提示和跟踪
查看>>
python udp编程实例
查看>>
TortoiseSVN中图标的含义
查看>>
js原生继承之——构造函数式继承实例
查看>>
linux定时任务的设置
查看>>
[CareerCup] 13.3 Virtual Functions 虚函数
查看>>
[Angular 2] ng-model and ng-for with Select and Option elements
查看>>
Tasks and Back stack 详解
查看>>
关于EXPORT_SYMBOL的作用浅析
查看>>
成功的背后!(给所有IT人)
查看>>