题目链接:https://www.nowcoder.com/acm/contest/140/A

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld

题目描述

White Cloud is exercising in the playground.
White Cloud can walk 1 meters or run k meters per second.
Since White Cloud is tired,it can't run for two or more continuous seconds.
White Cloud will move L to R meters. It wants to know how many different ways there are to achieve its goal.
Two ways are different if and only if they move different meters or spend different seconds or in one second, one of them walks and the other runs.

输入描述:

  1. The first line of input contains 2 integers Q and k.Q is the number of queries.(Q<=100000,2<=k<=100000)
    For the next Q lines,each line contains two integers L and R.(1<=L<=R<=100000)

输出描述:

  1. For each query,print a line which contains an integer,denoting the answer of the query modulo 1000000007.

输入

  1. 3 3
  2. 3 3
  3. 1 4
  4. 1 5

输出

  1. 2
  2. 7
  3. 11
 
题意:
有个人现在有两种行进方式:1、走路,速度 1 m/s;2、跑步,速度 k m/s,但是跑步不能持续两秒及以上。
现在这个人目标是跑[L,R]米,请问他有多少种方式完成?
 
题解:
假设这个人从0米出发,只能往右跑,只要到达[L,R]区间即可,
我们设:
 dp[i][0]:最后一步是跑着到 i 米的方案数。
 dp[i][1]:最后一步是走着到 i 米的方案数。
那么我们可以先一次性把所有dp[i][0]和dp[i][1]做出来,然后对于每个查询,答案就是$\sum\limits_{i = L}^R {\left( {dp\left[ i \right]\left[ 0 \right] + dp\left[ i \right]\left[ 1 \right]} \right)} $。
同时,考虑到如果每次查询都要求一次和比较浪费时间,所以用前缀和数组$sum\left[ i \right] = \sum\limits_{k = 0}^i {\left( {dp\left[ k \right]\left[ 0 \right] + dp\left[ k \right]\left[ 1 \right]} \right)} $。
 
AC代码:
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. const int MAX=+;
  5. const ll MOD=;
  6.  
  7. int Q,k;
  8. int L,R;
  9. ll dp[MAX][];
  10. //dp[i][0]:最后一步是跑着到 i 米的方案数。
  11. //dp[i][1]:最后一步是走着到 i 米的方案数。
  12. ll sum[MAX];
  13.  
  14. int main()
  15. {
  16. scanf("%d%d",&Q,&k);
  17.  
  18. memset(dp,,sizeof(dp));
  19. dp[][]=, dp[][]=;
  20. for(int i=;i<=MAX;i++)
  21. {
  22. dp[i+k][]+=dp[i][]; dp[i+k][]%=MOD;
  23. dp[i+][]+=dp[i][]+dp[i][]; dp[i+][]%=MOD;
  24. }
  25.  
  26. sum[]=;
  27. for(int i=;i<=MAX;i++)
  28. {
  29. //printf("%d: %lld %lld\n",i,dp[i][0],dp[i][1]);
  30. sum[i]=(sum[i-]+(dp[i][]%MOD+dp[i][]%MOD)%MOD)%MOD;
  31. }
  32.  
  33. for(int q=;q<=Q;q++)
  34. {
  35. scanf("%d%d",&L,&R);
  36. printf("%lld\n",((sum[R]-sum[L-])+MOD)%MOD);
  37. }
  38. }

2018牛客网暑期ACM多校训练营(第二场) A - run - [DP]的更多相关文章

  1. 2018牛客网暑期ACM多校训练营(第二场)I- car ( 思维)

    2018牛客网暑期ACM多校训练营(第二场)I- car 链接:https://ac.nowcoder.com/acm/contest/140/I来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 ...

  2. 2018牛客网暑期ACM多校训练营(第一场)D图同构,J

    链接:https://www.nowcoder.com/acm/contest/139/D来源:牛客网 同构图:假设G=(V,E)和G1=(V1,E1)是两个图,如果存在一个双射m:V→V1,使得对所 ...

  3. 2018 牛客网暑期ACM多校训练营(第一场) E Removal (DP)

    Removal 链接:https://ac.nowcoder.com/acm/contest/139/E来源:牛客网 题目描述 Bobo has a sequence of integers s1, ...

  4. 2018牛客网暑期ACM多校训练营(第十场)A Rikka with Lowbit (树状数组)

    链接:https://ac.nowcoder.com/acm/contest/148/A 来源:牛客网 Rikka with Lowbit 时间限制:C/C++ 5秒,其他语言10秒 空间限制:C/C ...

  5. 2018牛客网暑期ACM多校训练营(第十场)J Rikka with Nickname(二分,字符串)

    链接:https://ac.nowcoder.com/acm/contest/148/J?&headNav=acm 来源:牛客网 Rikka with Nickname 时间限制:C/C++ ...

  6. 2018牛客网暑期ACM多校训练营(第二场)J Farm(树状数组)

    题意 n*m的农场有若干种不同种类作物,如果作物接受了不同种类的肥料就会枯萎.现在进行t次施肥,每次对一个矩形区域施某种类的肥料.问最后枯萎的作物是多少. 分析 作者:xseventh链接:https ...

  7. 2018牛客网暑期ACM多校训练营(第一场)B Symmetric Matrix(思维+数列递推)

    题意 给出一个矩阵,矩阵每行的和必须为2,且是一个主对称矩阵.问你大小为n的这样的合法矩阵有多少个. 分析 作者:美食不可负064链接:https://www.nowcoder.com/discuss ...

  8. 2018牛客网暑期ACM多校训练营(第三场) A - PACM Team - [四维01背包][四约束01背包]

    题目链接:https://www.nowcoder.com/acm/contest/141/A 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K ...

  9. 2018牛客网暑期ACM多校训练营(第五场) F - take - [数学期望][树状数组]

    题目链接:https://www.nowcoder.com/acm/contest/143/F 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K ...

  10. 2018牛客网暑期ACM多校训练营(第五场) E - room - [最小费用最大流模板题]

    题目链接:https://www.nowcoder.com/acm/contest/143/E 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K ...

随机推荐

  1. ios的单元測试OCUnit以及更新了之后的XCTestCase

    1.像一般创建项目的步骤一样.创建一个用于測试的项目或者打开一个待測试的项目. (oc是5.0之前所使用的測试,如今用的是XCtestCase,默认会创建一个主的測试类.曾经版本号可能非常多步骤省去) ...

  2. Windows最全快捷键

    单独按Windows:显示或隐藏“开始”功能表 Windows+BREAK:显示“系统属性” 对话框 Windows+D:显示桌面 Windows+M:最小化所有窗口 Windows+Shift+M: ...

  3. 服务端测试之接口测试工具——postman

    今天跟大家分享一个非常常见大家也非常熟悉的测试工具——postman. 1.安装postman postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件.打开chrome浏览器, ...

  4. linux-指定特殊域去重

    测试数据: 2017-10-24 14:14:11:1123 [ INFO] order_type=add,order_id=9152017-10-24 14:14:11:1123 [ INFO] o ...

  5. 【RF库XML测试】Get Element

    Name:Get ElementSource:XML <test library>Arguments:[ source | xpath=. ]Returns an element in t ...

  6. nginx安装教程

    一.安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 二.首先要安装 PCRE ...

  7. Android学习之AutoCompleteTextView

    AutoCompleteTextView有点类似于EditText和Spinner的混合体.当用户在输入时,如果应用程序的文本输入框中使用了自动完成控件,预输入文本被看作是一个前缀过滤器,与用户当前输 ...

  8. Android Studio 无法预览xml布局视图的解决办法

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/lvyoujt/article/details/73283762 提示:failed to load ...

  9. MDU某产品OMCI模块代码质量现状分析

    说明 本文参考MDU系列某产品OMCI模块现有代码,提取若干实例以说明目前的代码质量,亦可作为甄别不良代码的参考. 本文旨在就事论事,而非否定前人(没有前人的努力也难有后人的进步).希望以史为鉴,不破 ...

  10. css笔记 - animation学习笔记(二)

    animation动画 @keyframes规则 - 创建动画 from - to 等价于 0% - 100% 但是优先使用0% - 100%,因为浏览器兼容性还好点 animation 动画绑定 将 ...