寂寞 OIer 在线求调
查看原帖
寂寞 OIer 在线求调
1094614
Iggle_Piggle楼主2023/10/17 17:41

蒟蒻太若,刚学 OI,写前缀和优化 dp,WA 了两个点。

题意

有 n 个不同的小朋友和 k 个相同的糖,给每个小朋友分配若干个糖且糖要分配完,每个小朋友分配糖的上限个数为 ai,求分配方案总数。

code

#include <bits/stdc++.h>
using namespace std;
const int N= 1e5+ 5, mod= 1e9+ 7;
long long n, p[105], dp[105][N], k, sum[105][N];
signed main()
{
	scanf("%d%d", &n, &k);
	for(int i= 1; i<= n; i++) scanf("%d", &p[i]);
	for(int i= 1; i<= p[1]+ 1; i++) dp[1][i]= 1;
	for(int i= 1; i<= k+ 1; i++) sum[1][i]= (sum[1][i- 1]+ dp[1][i])% mod;
	for(int i= 2; i<= n; i++)
		for(int j= 1; j<= k+ 1; j++)
			dp[i][j]= ((long long)sum[i- 1][j]- ((j> p[i]+ 1) ? sum[i- 1][j- p[i]- 1] : 0))% mod,
			sum[i][j]= ((long long)sum[i][j- 1]+ dp[i][j])% mod;
	printf("%lld", dp[n][k+ 1]% mod);
	return 0;
}
2023/10/17 17:41
加载中...