D-碎碎念 Generating Function分析

最近,遇到数数题目,总是先想到生成函数哈

每AC一道题目,要么喊1次,要么喊次,设为AC一道题目的生成函数,

整个竞赛过程,是一个AC的“序列”: 外加最后的一个可能不AC的“题目” , 所以整体的生成函数是:

亦即:, 这里的比较简单,可得递归关系

一般性问题 已知求,可用二分FFT DP来解决 (赛时脑热,没理递归关系,直接二分DP练手了哈)

简单代码:

#include<stdio.h>
#define MOD 1000000007
int dp[100004];
int ss[100004];
int main() {
	int n, i, x, q, a, b, r;
	scanf("%d", &x);
	for (i=0; i<=100000; i++) {
		if (i==0) dp[i]=1;
		else if (i==x) dp[i]=(1+dp[i-1])%MOD;
		else dp[i]=((i>=1?dp[i-1]:0)+(i>=x+1?dp[i-x-1]:0))%MOD;
	}
	//prefix sum
	ss[0]=0; for (i=0; i<=100000; i++) ss[i+1]=(ss[i]+dp[i])%MOD;
	scanf("%d", &q); while(q--) {
		scanf("%d %d", &a, &b);
		r=ss[b+1]-ss[a];
		if (r<0) r+=MOD;
		printf("%d\n", r);
	}

	return 0;
}

全部评论
点赞 回复 分享
发布于 11-13 10:20 北京

相关推荐

11-23 15:14
中原工学院 Java
点赞 评论 收藏
分享
10-24 00:54
已编辑
门头沟学院 Java
牛客20646354...:这连小厂都找不到就离谱,只能说可能你根本没投什么小厂。说实话现在都要11月了,没什么岗位了。其实最好是在9月找,那时候暑假工刚走,岗位多的是,现在都占满了岗位了,秋招的秋招,顶替暑假工的也基本上都顶替了。 只能多投了,简历其实都差不多,你这都不是外卖+点评去找实习了,已经比好多人优秀了。实在找不到,可以降低一些标准的,能投到自研项目的小厂说实话可能比你去中大厂能学到更多东西。因为中大厂最多给你看一点点模块功能,小厂基本上全部代码甚至几个项目的代码都能拿到。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务