样例过了可还是零分!救命

P1077 [NOIP2012 普及组] 摆花

@[彭科壹](/user/484717) mod 是 $1000007$ 吧 而且 j 和 k 应该从零开始
by Carnival @ 2021-10-06 09:45:49


有错轻喷
by Carnival @ 2021-10-06 09:47:44


@[彭科壹](/user/484717) j 和 k 应该从1开始 你少初始化了一些东西
by _l_l_l_l_l_ @ 2021-10-06 10:00:31


@[Gamemode](/user/316300) 0 开始,那 `f[i-1][j-k]`就RE了(
by _l_l_l_l_l_ @ 2021-10-06 10:03:00


@[WenZKbb](/user/522828) az 我看题解都是从 $0$ 开始的 话说为啥`f[i-1][j-k]`会 RE 啊(
by Carnival @ 2021-10-06 10:14:20


@[Gamemode](/user/316300) 不会RE 我试了一下 - j从1开始 https://www.luogu.com.cn/record/59263134 - 从0 https://www.luogu.com.cn/record/59263100 我的ac代码 ``` #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int MOD=1e6+7; //每种不超过a[i],一共不超过m //可以一盆也不放 int n,m,a[101],f[101][101];//f[i][j] 前i种花,一共摆了j盆,方法数 int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++)scanf("%d",&a[i]); //memset(f,-0x3f,sizeof(f)); for(int i=0;i<=n;i++)f[i][0]=1;//奇怪的初始化又增加了,一定要记得所有初始有的条件都要初始化 for(int i=1;i<=n;i++)//枚举花的种类 { for(int j=1;j<=m;j++)//枚举一共摆了几个 { for(int k=0;k<=a[i];k++)//枚举这种(第i种)摆几盆 { if(k>j)break; f[i][j]+=f[i-1][j-k]; f[i][j]%=MOD; } } } printf("%d\n",f[n][m]); return 0; } ```
by _l_l_l_l_l_ @ 2021-10-06 10:23:18


|