c语言sscanf函数的用法是什么
239
2022-09-02
bzoj5332&loj2565 [Sdoi2018]旧试题
题目地址 首先知道结论 原题所求可以转化为 ∑i=1A∑j=1B∑k=1C∑x|i∑y|j∑z|k[gcd(x,y)=1][gcd(x,z)=1][gcd(y,z)=1] ∑ i = 1 A ∑ j = 1 B ∑ k = 1 C ∑ x | i ∑ y | j ∑ z | k [ g c d ( x , y ) = 1 ] [ g c d ( x , z ) = 1 ] [ g c d ( y , z ) = 1 ] ∑x=1A∑y=1B∑z=1C[gcd(x,y)=1][gcd(x,z)=1][gcd(y,z)=1]⌊Ax⌋⌊By⌋⌊Cz⌋ ∑ x = 1 A ∑ y = 1 B ∑ z = 1 C [ g c d ( x , y ) = 1 ] [ g c d ( x , z ) = 1 ] [ g c d ( y , z ) = 1 ] ⌊ A x ⌋ ⌊ B y ⌋ ⌊ C z ⌋ 针对每个gcd莫比乌斯反演 ∑x=1A∑y=1B∑z=1C∑i|x,i|yμ(i)∑j|x,j|zμ(j)∑k|y,k|zμ(k)⌊Ax⌋⌊By⌋⌊Cz⌋ ∑ x = 1 A ∑ y = 1 B ∑ z = 1 C ∑ i | x , i | y μ ( i ) ∑ j | x , j | z μ ( j ) ∑ k | y , k | z μ ( k ) ⌊ A x ⌋ ⌊ B y ⌋ ⌊ C z ⌋ ∑i=1A∑j=1B∑k=1Cμ(i)μ(j)μ(k)∑i|x,j|x⌊Ax⌋∑i|y,k|y⌊By⌋∑j|z,k|z⌊Cz⌋ ∑ i = 1 A ∑ j = 1 B ∑ k = 1 C μ ( i ) μ ( j ) μ ( k ) ∑ i | x , j | x ⌊ A x ⌋ ∑ i | y , k | y ⌊ B y ⌋ ∑ j | z , k | z ⌊ C z ⌋ 后面这个带下去整符号的东西我们可以考虑n log(n)预处理 设fn(i)=∑i|dnnd f n ( i ) = ∑ i | d n n d 那么因为后面的东西是i|x,j|x i | x , j | x 所以直接给他换成lcm的倍数即可 然后考虑这直接暴力是n^3但是显然当f函数的i>n的时候是0 所以我们考虑如何求解 首先把i,j,k都相同的枚举 算答案再算两两相同的答案 n=max(A,B,C); 设点x,y 只有当他们的lcm< n的时候把他们加入然后给无向图定向 使得点度小的往大的连如果相同编号小->大 这样保证每个点出度是sqrt(n) 然后最后再去暴力枚举三元环即可 因为顺序问题 分六种情况讨论 前面的枚举两两相同的采取枚举lcm的方式可以使得复杂度是n∗log(n)2 n ∗ l o g ( n ) 2
#include
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~