Loading [MathJax]/extensions/TeX/mathchoice.js

牛客挑战赛44 D 数列的和

https://ac.nowcoder.com/acm/contest/8051/D

一个长度为n的数列满足aim,它的贡献为(mai)((ai+K)2K2)

求所有的这样的数列的贡献和。

n,m,K106


生成函数吼题。

答案为(mj)[xj]((i+2K)ixi)n

先用个比较优美的方式表示(i+2K)ixi
(i+2K)ixi=i(i+1)xi+(2K1)xi=2x(1x)3+2K1(1x)2

(总结一下:当要把形如iF(i)xi的式子化成封闭的优美形式时,可以把F(x)变成上升幂多项式)

继续推:

(\frac{2x}{(1-x)^3}+\frac{2K-1}{(1-x)^2})^n=\frac{2^nx^n}{(1-x)^{2n}}(\frac{1}{1-x}+c)^n=2^n\sum_{i=0}^n\frac{x^n}{(1-x)^{2n+i}}\binom{n}{i}c^{n-i}

c为常数。

\sum_{j=n}^m(m-j)[x^j]2^n\sum_{i=0}^n\frac{x^n}{(1-x)^{2n+i}}\binom{n}{i}c^{n-i}=2^n\sum_{j=n}^m(m-j)\sum_{i=0}^n\binom{i+j+n-1}{i+2n-1}\binom{n}{i}c^{n-i}=2^n\sum_{i=0}^n\binom{n}{i}c^{n-i}\sum_{j=n}^m(m-j)\binom{i+j+n-1}{i+2n-1}

\sum_{j=n}^m(m-j)\binom{i+j+n-1}{i+2n-1}=\sum_{j=n}^m\sum_{k=j+1}^m\binom{i+j+n-1}{i+2n-1}=\sum_{k=n}^m\sum_{j=n}^{k-1}\binom{i+j+n-1}{i+2n-1}=\binom{i+n+m}{i+2n+1}

所以答案为2^n\sum_{i=0}^n\binom{n}{i}c^{n-i}\binom{i+n+m}{i+2n+1}

可以O(n)解决。


using namespace std;
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 2000010
#define ll long long
#define mo 998244353
ll qpow(ll x,ll y=mo-2){
	ll r=1;
	for (;y;y>>=1,x=x*x%mo)
		if (y&1)
			r=r*x%mo;
	return r;
}
ll fac[N],ifac[N];
void initC(int n){
	fac[0]=1;
	for (int i=1;i<=n;++i)
		fac[i]=fac[i-1]*i%mo;
	ifac[n]=qpow(fac[n]);
	for (int i=n-1;i>=0;--i)
		ifac[i]=ifac[i+1]*(i+1)%mo;
}
ll C(int m,int n){
	if (m<n) return 0;
	return fac[m]*ifac[n]%mo*ifac[m-n]%mo;
}
int n,m,k;
int main(){
	freopen("in.txt","r",stdin);
	freopen("out.txt","w",stdout);
	scanf("%d%d%d",&n,&m,&k);
	initC(m*2+n*2);
	ll c=(2*k-1+mo)*qpow(2)%mo,invc=qpow(c);
	ll ans=0;
//	for (int j=n;j<=m;++j){
//		ll s=0;
//		for (int i=0;i<=n;++i)
//			(s+=C(n,i)*qpow(c,n-i)%mo*C(i+j+n-1,j-n))%=mo;
//		(ans+=s*(m-j))%=mo;
//	}
//	ans=ans*qpow(2,n)%mo;
	for (int i=0;i<=n;++i){
		ll s=C(i+n+m,i+2*n+1);
//		for (int k=n;k<=m;++k)
//			s+=C(i+n+k-1,i+2*n);
//		s%=mo;
		(ans+=C(n,i)*qpow(c,n-i)%mo*s)%=mo;
	}
	ans%=mo;
	ans=ans*qpow(2,n)%mo;
	printf("%lld\n",ans);
	return 0;
}
posted @   jz_597  阅读(159)  评论(0编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· 深入理解Mybatis分库分表执行原理
· 使用 Dify + LLM 构建精确任务处理应用
点击右上角即可分享
微信分享提示