蓝桥杯 10. 安全序列

当然可以,以下是整理后的 Markdown 格式题目描述:


题目描述

小蓝是工厂里的安全工程师,他负责安放工厂里的危险品。

工厂是一条直线,直线上有 n 个空位,小蓝需要将若干个油桶放置在这 n 个空位上。每 2 个油桶中间至少需要 k 个空位隔开

现在小蓝想知道,有多少种放置油桶的方案。你可以编写一个程序帮助他吗?

由于这个结果可能非常大,你的输出结果需要对 10^9 + 7 取模。


输入格式

  • 第一行包含两个正整数 nk,分别表示空位数量和每两个油桶之间至少要隔开的空位数。

输出格式

  • 输出共 1 行,包含 1 个整数,表示放置油桶的方案数,对 10^9 + 7 取模。

样例输入

in 复制代码
4 2

样例输出

out 复制代码
6

说明

使用 0 表示不放油桶,1 表示放油桶。

合法的 6 种放置方案如下:

in 复制代码
0000
1000
0100
0010
0001
1001

数据范围

  • 1 ≤ n ≤ 10^6
  • 1 ≤ k ≤ n

c++代码

cpp 复制代码
#include<bits/stdc++.h>

using namespace std;

int main() {
    int n, k, mod = 1e9 + 7;
    cin >> n >> k;
    vector<int> dp(n + 1, 0);
    for (int i = 1; i <= n; i++) {
        dp[i] += (i - k - 1 >= 1) ? dp[i - k - 1] : 1;//放
        dp[i] += (i - 1 >= 1) ? dp[i - 1] : 1;//不放
        dp[i] %= mod;
    }
    cout << dp[n];
    return 0;
}//by wqs
相关推荐
每日任务(希望进OD版)2 分钟前
线性DP、区间DP
开发语言·数据结构·c++·算法·动态规划
charlie1145141916 分钟前
嵌入式C++教程实战之Linux下的单片机编程(9):HAL时钟使能 —— 不开时钟,外设就是一坨睡死的硅
linux·开发语言·c++·单片机·嵌入式硬件·c
放羊郎7 分钟前
机器人跟随算法
算法·机器人
liu****9 分钟前
第十五届蓝桥杯大赛软件赛国赛C/C++大学B组
c++·算法·蓝桥杯·acm
zhooyu10 分钟前
利用叉乘判断OpenGL中的左右关系
c++·3d·opengl
We་ct11 分钟前
LeetCode 172. 阶乘后的零:从暴力到最优,拆解解题核心
开发语言·前端·javascript·算法·leetcode·typescript
轻微的风格艾丝凡11 分钟前
三相不平衡电流调试经验记录
算法·dsp
老虎062721 分钟前
LeetCode热题100 刷题笔记(第五天)双指针法 「 三数之和 」
笔记·算法·leetcode
光电笑映27 分钟前
C++11 新特性全解:语法糖、容器进化与可调用对象包装
开发语言·c++
汀、人工智能28 分钟前
[特殊字符] 第97课:前K个高频元素
数据结构·算法·数据库架构··数据流·前k个高频元素