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=;
bool f=;
char ch=' ';
while(!isdigit(ch))
{
f|=(ch=='-'); ch=getchar();
}
while(isdigit(ch))
{
s=(s<<)+(s<<)+(ch^); ch=getchar();
}
return (f)?(-s):(s);
}
#define R(x) x=read()
inline void write(ll x)
{
if(x<)
{
putchar('-'); x=-x;
}
if(x<)
{
putchar(x+''); return;
}
write(x/);
putchar((x%)+'');
return;
}
#define W(x) write(x),putchar(' ')
#define Wl(x) write(x),putchar('\n')
const ll Mod=;
const int N=;
int T;
ll K;
ll Qzh[N];
ll dp[N];
int main()
{
int i,j;
R(T); R(K);
dp[]=Qzh[]=;
for(i=;i<=;i++)
{
dp[i]+=dp[i-];
if(i>=K) dp[i]+=dp[i-K];
dp[i]-=(dp[i]>=Mod)?Mod:;
Qzh[i]=Qzh[i-]+dp[i];
Qzh[i]-=(Qzh[i]>=Mod)?Mod:;
}
while(T--)
{
int l=read(),r=read();
Wl((Qzh[r]-Qzh[l-]+Mod)%Mod);
}
return ;
}
/*
input
3 2
1 3
2 3
4 4
output
6
5
5
*/

codeforces474D的更多相关文章

随机推荐

  1. 如何备份和恢复你的TFS服务器(一)

    备份和恢复一个TFS(Team Foundation Server)服务器常常令人心生畏惧.因为这会涉及到很多服务和步骤.TFS(Team Foundation Server)2010一发布,我就知道 ...

  2. ReactJs入门教程-精华版

    原文地址:https://www.cnblogs.com/Leo_wl/p/4489197.html阅读目录 ReactJs入门教程-精华版 回到目录 ReactJs入门教程-精华版 现在最热门的前端 ...

  3. Linux下快速配置Java开发环境

    1.下载 jdk8官网下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ...

  4. 自建 Gitlab (邮箱配置、拆分 PostgreSQL、Redis) + 随想

    前言 最近折腾了一番自建 gitlab,在此做个记录,供君参考.整个构建过程基于 Docker Swarm(近期有计划将微服务移植到 Kubernetes,但还没倒腾顺手,暂时先沿用旧的方案),主题配 ...

  5. SAI窗口无法移动

    昨天开SAI遇到了一个很奇怪的问题,改变了双屏的位置后SAI的窗口不能移动两边也有黑边,貌似是这样,标题栏只能进行上下改变窗口大小,不能移动窗体 问题是这样出现的:把任务栏解除锁定拖到侧边就会这样 解 ...

  6. UVA - 12716 - 异或序列

    求满足GCD(a,b) = a XOR b; 其中1<=b <=a<=n. 首先做这道题需要知道几个定理: 异或:a XOR b = c 那么 a XOR c = b; 那么我们令G ...

  7. Pytorch 初识

    文章目录 一个简单的回归网络的例子 再来一个例子 官方教程上图片识别的例子 import torch import torch.nn as nn import torch.nn.functional ...

  8. Gym 101873F Plug It In(二分图匹配)

    题目链接:http://codeforces.com/gym/101873/problem/F 题意:有n个插孔,m个机器,和一个插板,一个插孔可以连接一个机器,插板可以使一个插孔连接三个机器,找到最 ...

  9. 各种jar包

    springframework下载地址:http://maven.springframework.org/release/org/springframework/spring/ commons开头的j ...

  10. PS调出怀旧雨中特写的非主流照片

    原图 最终效果 一.打开原图素材,按Ctrl + ALt + ~ 调出高光选区,按Ctrl + Shift + I 反选,然后创建曲线调整图层,适当调暗一点. 二.合并所有图层,点通道面板,选择蓝色通 ...