当前位置: 首页> 房产> 家装 > 打开这个你会感谢我的网站_优化方案英语必修三电子版_百度推广登陆后台_站长工具一区

打开这个你会感谢我的网站_优化方案英语必修三电子版_百度推广登陆后台_站长工具一区

时间:2025/7/9 2:55:33来源:https://blog.csdn.net/Ct314/article/details/147149463 浏览次数:0次
打开这个你会感谢我的网站_优化方案英语必修三电子版_百度推广登陆后台_站长工具一区

#include <bits/stdc++.h>
using namespace std;
const int MOD=1e9+7;
const int N=1e6+5;
int f[N];
int main()
{int n,k;cin>>n>>k;f[0]=1;for(int i=1;i<=n;i++){f[i]=f[i-1];          // 不放桶:延续前一位的所有方案if(i-k-1>=0){f[i]=(f[i]+f[i-k-1])%MOD; // 空出 k 个空位放桶} else f[i]=(f[i]+1)%MOD; // 前面空位不够,只能放一个桶,相当于加一种方案}cout<<f[n];return 0;
}

 f[i] 表示:前 i 个空位的所有合法方案数

 f[0] = 1:表示 0 个空位时,有 1 种方式(啥都不放)

i 位置不放桶:

   f[i] = f[i - 1]; 

第 i 个空位不放油桶,那就和 i-1 个空位的放法完全一样。

所以 f[i] 至少要等于 f[i - 1]

 i 位置放桶:

    if (i - k - 1 >= 0) {
        f[i] = (f[i] + f[i - k - 1]) % MOD;
在第 i 个位置放一个油桶。前一个油桶最多只能放在第 i - k - 1 个位置,所以放一个油桶的方案数等于 f[i - k - 1]

如果 i - k - 1 < 0,说明:

  • 根本没有足够空位留出 k 的间隔。

  • 这时候唯一合法的方案就是:只在位置 i 放一个油桶,其它位置不放

 

总结一句话:

f[i] = 不放桶的方案 + 放桶的方案(考虑空 k 格)

关键字:打开这个你会感谢我的网站_优化方案英语必修三电子版_百度推广登陆后台_站长工具一区

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: