码迷,mamicode.com
首页 > 其他好文 > 详细

codeforces474D

时间:2019-04-04 20:14:57      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:event   开始   include   http   组合数   blank   col   read   lin   

Flowers

 CodeForces - 474D 

话说某个幸运的小伙伴X拿到了kevin女神送的蛋糕,然而他的吃法非常奇特,他独创了两种吃蛋糕的办法:一、一次吃一整个蛋糕;二、一次吃k个蛋糕。
那么,当蛋糕数量为x1到x2之间时,一共能有几种不同的吃法呢?
由于答案很大,输出结果mod 1000000007的值

Input

第一行有两个正整数t,k(1<=t,k<=100000) ,其中t表示数据的组数。
接下来t行,每行两个数x1, x2(1<=x1<=x2<=100000)。

Output

共t行,每行一个正整数x,表示蛋糕数量在x1-x2之间时,一共能有几种不同的吃法,结果对(10^9+7)取模

Sample Input

3 2
1 3
2 3
4 4

Sample Output

6

5

5

Hint

样例中,k=2
我们标记吃法1为A,吃法2为B
当蛋糕数为1时,共1种吃法 即为A
当蛋糕数为2时,共2种,分别为 AA,B
当蛋糕数为3时,共3种,分别为 AAA,AB,BA
当蛋糕数为4时,共5种,分别为 AAAA, AAB,ABA,BAA,BB
 
sol:开始以为是组合数一样的东西,搞了一会后严重自闭,发现是dp。。。
dp[i]表示蛋糕数量为 i 的吃法,对dp记个前缀和就可以O(1)查询了
技术图片
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
inline ll read()
{
    ll s=0;
    bool f=0;
    char ch= ;
    while(!isdigit(ch))
    {
        f|=(ch==-); ch=getchar();
    }
    while(isdigit(ch))
    {
        s=(s<<3)+(s<<1)+(ch^48); ch=getchar();
    }
    return (f)?(-s):(s);
}
#define R(x) x=read()
inline void write(ll x)
{
    if(x<0)
    {
        putchar(-); x=-x;
    }
    if(x<10)
    {
        putchar(x+0); return;
    }
    write(x/10);
    putchar((x%10)+0);
    return;
}
#define W(x) write(x),putchar(‘ ‘)
#define Wl(x) write(x),putchar(‘\n‘)
const ll Mod=1000000007;
const int N=100005;
int T;
ll K;
ll Qzh[N];
ll dp[N];
int main()
{
    int i,j;
    R(T); R(K);
    dp[0]=Qzh[0]=1;
    for(i=1;i<=100000;i++)
    {
        dp[i]+=dp[i-1];
        if(i>=K) dp[i]+=dp[i-K];
        dp[i]-=(dp[i]>=Mod)?Mod:0;
        Qzh[i]=Qzh[i-1]+dp[i];
        Qzh[i]-=(Qzh[i]>=Mod)?Mod:0;
    }
    while(T--)
    {
        int l=read(),r=read();
        Wl((Qzh[r]-Qzh[l-1]+Mod)%Mod);
    }
    return 0;
}
/*
input
3 2
1 3
2 3
4 4
output
6
5
5
*/
View Code

 

codeforces474D

标签:event   开始   include   http   组合数   blank   col   read   lin   

原文地址:https://www.cnblogs.com/gaojunonly1/p/10656737.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!