首页 > 其他 > 详细

牛客网暑期ACM多校训练营(第二场)A-run

时间:2018-09-20 20:40:51      阅读:237      评论:0      收藏:0      [点我收藏+]

白云在健身,每秒可以走1米或跑k米,并且不能连续两秒都在跑。
当它的移动距离在[L,R]之间时,可以选择结束锻炼。
问有多少种方案结束。

爬楼梯模型:dp[n]=dp[n-1]+dp[n-1-k]

 

#include <iostream>
#include <cstdio>

using namespace std;

#define mod 1000000007

int q,k;
long long dp[100005];

int main()
{
    scanf("%d%d",&q,&k);
    for(int i=1;i<k;i++) dp[i]=1;
    dp[k]=2;
    dp[k+1]=3;
    for(int i=k+2;i<=100001;i++)
    {
        dp[i]=(dp[i-1]+dp[i-k-1])%mod;
    }
    for(int i=2;i<=100001;i++)
    {
        dp[i]=dp[i-1]%mod+dp[i]%mod;
    }
    while(q--){
        int a,b;
        scanf("%d%d",&a,&b);
        long long ans=(dp[b]-dp[a-1])%mod;
        printf("%lld\n",ans);

    }
    return 0;
}

 

牛客网暑期ACM多校训练营(第二场)A-run

原文:https://www.cnblogs.com/Fy1999/p/9683106.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!