牛客IOI周赛17-提高组 卷积 生成函数 多项式求逆 数列通项公式

LINK:卷积

思考的时候 非常的片面 导致这道题没有推出来。

虽然想到了设生成函数 G(x)表示最后的答案的普通型生成函数 不过忘了化简 GG.

容易推出 \(G(x)=\frac{F(x)}{1-F(x)}\)

多项式求逆一下再卷积一下即可。(nlogn).

有dalao 提出了求通项公式的做法 对多项式求出类似于泰勒展开式那样的封闭形式.

然后 带入G进行化简 最终再由通项公式推出来。推出通项可以可以递推可以矩阵乘法优化 O(n)/(logn).

做法 来自@Lskkkno1 :

avatar

很妙的求通项的方法 不过我不太熟悉这方面的知识. 还需要多加理解!

const ll MAXN=2000010,GG=3;
ll n,a,b;
ll f[MAXN];
signed main()
{
	//freopen("1.in","r",stdin);
	get(n);get(a);get(b);
	f[1]=1;
	rep(2,n,i)f[i]=((a+1)*f[i-1]+b*f[i-2])%mod;
	putl(f[n]);return 0;
}
posted @ 2020-06-07 10:43  chdy  阅读(237)  评论(0编辑  收藏  举报