bzoj3451 tyvj1953 Normal

mhy大爷多久之前开的坑啊ovo 这题的思路比较神.点分+fft.两个点会产生的贡献是1/(dist + 1).于是要知道长度为多少的链有多少条. 利用树分可以将∑深度降到O(n*log n)的级别.原因很明显啊. 然后就用fft来求就好喽.反正是double也懒得用数论了.然后找了wyf的程序随便就拍出一组末位不等,也没用long double.居然能过太神奇了. 总复杂度O(n*log2n).然后莫名其妙就拿了rank1好开心啊.

June 17, 2015 · 1 min · laekov

tyvj1996 工作分配2

沦落到写tyvj的题解了。不过看在这题之前只有7人过的份上就写一下好了。 式子是容斥,比较好想。answer = sigma((-1)^i * m^(n-i) * C(m, i)) (0 <= i <= m) m^(n-i)这一块用快速幂就好了。 然后对于前一题因为m很小所以用m^2把组合数弄出来就行了。但是这里m^2就T到明天去了。 观察 C(m, i) = m!/(i! * (m-i)!)  => C(m, i - 1) = m! / ((i-1)! * (m-i+1)!)  => C(m, i) = C(m, i - 1) / i * (m - i + 1) 这样递推用逆元来做就是O(m * lgm)的时间了。 然后这题就这样了。代码很短。 #include <iostream> #include <memory.h> using namespace std; #define _l (long long int) typedef long long qw; const int maxm = 1000009; const int mod = 1e9 + 7; int cm[maxm];...

October 15, 2014 · 1 min · laekov