感觉思(hui)路(tui)活(ti)跃(jie)了一些。
写(tui)一下总(shi)结(zi)
1.GuGuFishtion http://hzoj.com/contest/236/problem/1
[egin{aligned}\
n&<m\
ans&=sumlimits_{i=1}^{n}sumlimits_{j=1}^{m}frac{varphi(ij)}{varphi(i)varphi(j)}\
\
d&=gcd(i,j),l=lcm(i,j)\
i&=\_*p^c,j=\_*p^e,d=\_*p^{min(c,e)},l=\_*p^{max(c,e)}\
varphi(ij)&=dvarphi(frac{ij}{d})\
&=dvarphi(l)\
&=dlprodfrac{p_l-1}{p_l}\
&=frac{diprodfrac{p_i-1}{p_i}jprodfrac{p_j-1}{p_j}}{dprodfrac{p_d-1}{p_d}}\
&=frac{dvarphi(i)varphi(j)}{varphi(d)}\
\
&=sumlimits_{i=1}^{n}sumlimits_{j=1}^{m}frac{dvarphi(i)varphi(j)}{varphi(i)varphi(j)varphi(d)}\
&=sumlimits_{i=1}^{n}sumlimits_{j=1}^{m}frac{d}{varphi(d)}\
&=sumlimits_{d=1}^{n}frac{d}{varphi(d)}sumlimits_{i=1}^{frac{n}{d}}sumlimits_{j=1}^{frac{m}{d}}[gcd(i,j)=1]\
&=sumlimits_{d=1}^{n}frac{d}{varphi(d)}sumlimits_{i=1}^{frac{n}{d}}sumlimits_{j=1}^{frac{m}{d}}sumlimits_{g|gcd(i,j)}mu(g)\
&=sumlimits_{d=1}^{n}frac{d}{varphi(d)}sumlimits_{g=1}^{frac{n}{d}}mu(g)frac{n}{dg}frac{m}{dg}\
T&=dg\
&=sumlimits_{T=1}^{n}sumlimits_{d|T}frac{d}{varphi(d)}mu(frac{T}{d})frac{n}{T}frac{m}{T}\
&=sumlimits_{T=1}^{n}frac{n}{T}frac{m}{T}sumlimits_{d|T}frac{d}{varphi(d)}mu(frac{T}{d})\
&=sumlimits_{T=1}^{n}frac{n}{T}frac{m}{T}F(T)\
end{aligned}]
看一下(F(T))怎么求。
首先这个东西是积性函数。
证一下:
设(aperp b)
[F(a)F(b)=frac{ab}{varphi(a)varphi(b)}=frac{ab}{varphi(ab)}=F(ab)
]
[F=egin{cases}
F(i)=frac{i}{i-1}-1&iin p\
F(ip_j)=F(i)F(p_j)&iperp p_j\
F(ip_j)=0&otherwise\
end{cases}]
这样我们预处理函数(F(T))然后可以分块了。
这样复杂度瓶颈在于线筛是(O(n))的。
三次足够了。
2.bookshelf http://hzoj.com/contest/236/problem/2
首先两个引理(反正我想不到):
[fr.gcd(x^{a_1}-1,x^{a_2}-1,......,x^{a_n}-1)=x^{gcd(a_1,a_2,......,a_n)}-1
]
证明:
设(n<m)
[gcd(x^n-1,x^m-1)=gcd(x^n-1,x^m-x^n)=gcd(x^m-1,x^n(x^{m-n}-1))=gcd(x^m-1,x^{m-n}-1)
]
变成了指数辗转相减。
最后必然是:
[gcd(x^n-1,x^m-1)=x^{gcd(m-n)}-1
]
[se.gcd(f_{a_1},f_{a_2},......,f_{a_n})=f_{gcd(a_1,a_2,......,a_n)}
]
证明:
设(n<m)
[gcd(f_n,f_m)=gcd(f_n,f_{n-1}f_{m-n}+f_{n}f_{m-n+1})=gcd(f_n,f_{n-1}f_{m-n})=gcd(f_n,f_{m-n})
]
变成了下标辗转相减。
最后必然是:
[gcd(f_n,f_m)=f_{gcd(n,m)}
]
那么$$gcd({beauty_i})=2^{f[gcd({c_i})]}-1$$
所以答案是:
[egin{aligned}
ans&=frac{1}{inom{n+K-1}{K-1}}sumlimits_{i|n}(2^{f(i)}-1)F(i)\
F(d)&=sumlimits_{sum{a_i}=n}[gcd({a_i})=d]\
&=sumlimits_{sum{a_i}=frac{n}{d}}[gcd({a_i})=1]\
&=sumlimits_{sum{a_i}=frac{n}{d}}sumlimits_{g|gcd({a_i})}mu(g)\
&=sumlimits_{g|frac{n}{d}}mu(g)sumlimits_{sum{a_i}=frac{n}{dg}}I\
&=sumlimits_{g|frac{n}{d}}mu(g)inom{frac{n}{dg}+K-1}{K-1}\
ans&=frac{1}{inom{n+K-1}{K-1}}sumlimits_{i|n}2^{f(i)}-1sumlimits_{g|frac{n}{i}}mu(g)inom{frac{n}{dg}+K-1}{K-1}\
&=frac{1}{inom{n+K-1}{K-1}}sumlimits_{T|n}sumlimits_{d|T}(2^{f(d)}-1)mu(frac{T}{d})inom{frac{n}{T}+K-1}{K-1}\
&=frac{1}{inom{n+K-1}{K-1}}sumlimits_{T|n}inom{frac{n}{T}+K-1}{K-1}sumlimits_{d|T}(2^{f(d)}-1)mu(frac{T}{d})\
&=frac{1}{inom{n+K-1}{K-1}}sumlimits_{T|n}inom{frac{n}{T}+K-1}{K-1}h(T)\
end{aligned}]
然后(nln{n})预处理一下(h(T))就可以了。
3.TrickGCD http://hzoj.com/contest/236/problem/3
[gcd({b_i})=d
]
(f(n))为(gcd)恰好为(n)的方案数。
(g(n))为(gcd)为(n)的倍数的方案数。
[ans=sumlimits_{i=1}^{max}f(i)
]
[g(n)=sumlimits_{n|d}f(d)
]
[f(n)=sumlimits_{n|d}mu(frac{d}{n})g(d)
]
[egin{aligned}
g(d)&=prodlimits_{i=1}^{n}frac{a_i}{d}\
&=prodlimits_{i=1}^{frac{max}{d}}i^{c(id)}\
end{aligned}]
这样按照结果来分类就可以了。
4.Neko and function http://hzoj.com/contest/236/problem/4
发现难点在于(1)的处理,考虑容斥。
[ans=sumlimits_{i=1}^{n}f(i,K)
]
(F(n,K,m))为恰好有(m)个(1)的方案。
(G(n,K,m))为至少有(m)个(1)的方案。
(g(n,K))为无限制有多少个(1)的方案。
[G(n,K,m)=sumlimits_{i=m}^{K}inom{i}{m}F(n,K,i)
]
[F(n,K,m)=sumlimits_{i=m}^{K}(-1)^{i-m}inom{i}{m}G(n,K,i)
]
[G(n,K,m)=inom{K}{m}g(n,K-m)
]
[egin{aligned}
f(n,K)&=F(n,K,0)\
&=sumlimits_{i=0}^{K}(-1)^{i}inom{K}{i}g(n,K-i)\
&=sumlimits_{i=0}^{K}(-1)^{K-i}inom{K}{i}g(n,i)\
end{aligned}]
现在求一下(g(n,K))
怎么做呢?尝试做一个(dp)。
[g(n,K)=sumlimits_{d|n}g(d,K-1)
]
用卷积来写的话就是:
[g(K)=I*g(K-1)
]
[g(K-1)=g(K)*mu
]
由于每个质数之间互不干扰,所以(g)是一个积性函数。
这样就出现了杜教筛的形式。
[egin{aligned}
S_{K-1}(n)&=sumlimits_{i=1}^{n}g(n,K-1)\
&=sumlimits_{i=1}^{n}sumlimits_{d|i}g(frac{i}{d},K)mu(d)\
&=sumlimits_{d=1}^{n}mu(d)sumlimits_{i=1}^{frac{n}{d}}g(i,K)\
&=sumlimits_{d=1}^{n}mu(d)S_K(frac{n}{d})\
S_K(n)&=S_{K-1}(n)-sumlimits_{d=2}^{n}S_K(frac{n}{d})\
end{aligned}]
这样就可以直接杜教筛了。
[egin{aligned}
ans&=sumlimits_{i=1}^{n}f(i,K)\
&=sumlimits_{i=1}^{n}sumlimits_{j=0}^{K}(-1)^{j}inom{K}{j}g(i,j)\
&=sumlimits_{j=0}^{K}(-1)^{j}inom{K}{j}sumlimits_{i=1}^{n}g(i,j)\
&=sumlimits_{j=0}^{K}(-1)^{j}inom{K}{j}S_{j}(n)\
end{aligned}]
5.GCD of Sequence http://hzoj.com/contest/236/problem/5
[gcd(b_1,b_2......,b_n)=d
]
(g(d))是(gcd)为i(d)的倍数的方案,(f(d))是(gcd)恰好为(d)的方案。
[g(n)=sumlimits_{n|d}f(d)
]
[f(d)=sumlimits_{n|d}mu(frac{n}{d})g(d)
]
(c(d))为(d)的倍数的(a)的个数。
[g(d)=(frac{m}{d})^{n-c(d)}inom{c(d)}{n-K}(frac{m}{d}-1)^{c(d)}
]
6.Battlestation Operational http://hzoj.com/contest/236/problem/6
其实直接暴力推就可以了。
挺简单的。
[egin{aligned}\
f(n)&=sumlimits_{i=1}^{n}sumlimits_{j=1}^{i}lceil{frac{i}{j}}
ceil[gcd(i,j)=1]\
&=sumlimits_{j=1}^{n}sumlimits_{j=1}^{i}lceil{frac{i}{j}}
ceilsumlimits_{d|gcd(i,j)}mu(d)\
&=sumlimits_{i=1}^{n}sumlimits_{d|i}mu(d)sumlimits_{j=1}^{frac{i}{d}}lceil{frac{i}{jd}}
ceil\
&=sumlimits_{i=1}^{n}sumlimits_{d|i}mu(d)g(frac{n}{d})\
g(n)&=sumlimits_{i=1}^{n}lceil{frac{n}{i}}
ceil\
&=n+sumlimits_{i=1}^{n}lfloor{frac{n-1}{i}}
floor\
&=n+h(n-1)\
h(n)&=sumlimits_{i=1}^{n}lfloor{frac{n}{i}}
floor\
&=sumlimits_{i=1}^{n}sumlimits_{i|d}^{n}I\
&=sumlimits_{d=1}^{n}sumlimits_{i|d}I\
&=sumlimits_{d=1}^{n}d(i)
end{aligned}]
回代即可(nln{n})。