http://120.27.222.204:12243/problem/947
花的时间很久,我会一步一步简述怎么做。
fm=i=0∑naij=0∑i(−1)j(jm)(i−jn−m)
=i=0∑nai[xi]{(1−x)m(1+x)n−m}
这一步利用了范德蒙恒等式生成函数证明的方法,这个柿子长得那么像范德蒙恒等式,就可以把他化成了类似生成函数的形式。
=i=0∑nai[xi](1−x)m(1+x)n−m
=i=0∑nai[xi](1−x)m(1−x+2x)n−m
这样一下子就变成只剩下一个二项式了!
=i=0∑nai[xi](1−x)mk=0∑n−m(2x)k(1−x)n−m−k(kn−m)
注意这里的k和n−m−k互换以后柿子会变麻烦,虽然也可以做,但是最后不要互换为好。
=i=0∑nai[xi]k=0∑n−m(2x)k(1−x)n−k(kn−m)
=i=0∑naik=0∑n−m2k[xi−k](1−x)n−k(kn−m)
=i=0∑naik=0∑n−m2k(−1)i−k(i−kn−k)(kn−m)
这个柿子我看了好久,甚至一度怀疑他和原柿长得一样。。但是事实证明,像这样存在两个∑的柿子也可以算,关键在于是否能把一个∑符号里面的值转化成另一个数组,两个分布算。
其实这个时候已经具备了这种条件,只需要拨云即可见日,就差这关键的胜负手!
=k=0∑n−m2k(kn−m)i=0∑nai(i−kn−k)(−1)i−k
发现没有,后面的柿子里只有k!没有m!
令gk=i=0∑nai(i−kn−k)(−1)i−k
ans=k=0∑n−m2k(kn−m)gk
这时,终于发现上述两个柿子都是可以卷积的形式,这题就这么做完了。
http://120.27.222.204:12243/submission/79500
这是50分的暴力验证。
这题在考场上,对于我来说应该算一道不太可做的题,因为自己化柿子能力比较弱。但是也总结一下这次画柿子出现的错误吧:
1.二项式展开忘记乘组合数
2.n,m写反了
如果遇到相似的题,应该在关键的步骤处用程序验证!!!