`
Simone_chou
  • 浏览: 197559 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

Flowers(DP)

    博客分类:
  • CF
 
阅读更多
D. Flowers
time limit per test
1.5 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

We saw the little game Marmot made for Mole's lunch. Now it's Marmot's dinner time and, as we all know, Marmot eats flowers. At every dinner he eats some red and white flowers. Therefore a dinner can be represented as a sequence of several flowers, some of them white and some of them red.

But, for a dinner to be tasty, there is a rule: Marmot wants to eat white flowers only in groups of size k.

Now Marmot wonders in how many ways he can eat between a and b flowers. As the number of ways could be very large, print it modulo1000000007 (109 + 7).

Input

Input contains several test cases.

The first line contains two integers t and k (1 ≤ t, k ≤ 105), where t represents the number of test cases.

The next t lines contain two integers ai and bi (1 ≤ ai ≤ bi ≤ 105), describing the i-th test.

Output

Print t lines to the standard output. The i-th line should contain the number of ways in which Marmot can eat between ai and bi flowers at dinner modulo 1000000007 (109 + 7).

Sample test(s)
input
3 2
1 3
2 3
4 4
output
6
5
5
Note
  • For K = 2 and length 1 Marmot can eat (R).
  • For K = 2 and length 2 Marmot can eat (RR) and (WW).
  • For K = 2 and length 3 Marmot can eat (RRR), (RWW) and (WWR).
  • For K = 2 and length 4 Marmot can eat, for example, (WWWW) or (RWWR), but for example he can't eat (WWWR).

 

      题意:

      给出 t 和 k,代表有 t 组询问。k 代表一次只能吃 k 朵 W 花,后给出 t 组的 a - b 区间。问吃这段区间内的长度序列满足条件的方法数。

 

      思路:

      DP。dp [ i ] = dp [ i - k ] + dp [ i - 1] 代表一次要么连续吃 k 朵 W 花,要么一次吃 1 朵 R 花。记得最后答案中的减法后要 + MOD 再 % MOD。不然会出错。

 

      AC:

#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

typedef long long ll;

const ll MOD = 1000000007;
const int MAX = 100005;

ll dp[MAX];
ll sum[MAX];
ll a[MAX], b[MAX];

int main() {

    int t, k;
    scanf("%d%d", &t, &k);

    ll Max = 0;
    for (int i = 1; i <= t; ++i) {
        scanf("%I64d%I64d", &a[i], &b[i]);
        Max = max(Max, b[i]);
    }

    for (int i = 0; i < k; ++i) {
        dp[i] = 1;
        sum[i] = sum[i - 1] + dp[i];
    }

    for (int i = k; i <= Max; ++i) {
        dp[i] = (dp[i - k] + dp[i - 1]) % MOD;
        sum[i] = (dp[i] % MOD + sum[i - 1] % MOD) % MOD;
    }

    for (int i = 1; i <= t; ++i) {
        printf("%I64d\n", (sum[b[i]] - sum[a[i] - 1] + MOD) % MOD);
    }

    return 0;
}

 

 

分享到:
评论

相关推荐

    SGU推荐题目分类

    104 Little Shop of Flowers 动态规划:Little Shop of Flowers 是 SGU 中的一道动态规划题目,要求在一个花店中找到最优的购买策略。该题目可以使用动态规划来解决。 105 Div 3 找规律:Div 3 是 SGU 中的一道数学...

    2013年多校联训2题解1

    Vases and Flowers 这是一道涉及数据结构的题目,主要使用线段树。线段树可以高效地处理插入和删除操作,同时记录每个区间剩余的空间。当f=0时,输出特殊信息表示无法放置。 E. Play with Sequence 该题讨论图的度...

    郑州经济技术开发区上小学三年级英语期末质量检测题精选.doc

    1. 听音选词:这道题目训练学生的单词发音识别,涉及到的词汇包括字母发音(如bq, pd, dp等),以及常见的英语单词如pen, pencil, pencil box, blue, black, brown, face, head, hand等。 2. 听句填空:这部分旨在...

    基于Matlab与Yalmip的多用户储能电站日前经济调度优化模型

    内容概要:本文详细介绍了利用Matlab及其Yalmip工具箱,结合Gurobi求解器,实现多用户(如工业园区内的多个工厂)储能电站的日前经济调度优化。主要内容涵盖模型建立、变量定义、目标函数设定、约束条件配置以及求解过程。文中通过具体的代码实例展示了如何根据分时电价和各用户的用电需求,制定最优的储能充放电计划,从而达到降低总体电费的目的。此外,还讨论了一些常见的实现细节和技术难点,如充放电效率的正确处理、初始荷电状态(SOC)的设定等。 适合人群:具有一定编程基础并对电力系统优化感兴趣的工程师或研究人员。 使用场景及目标:适用于希望减少电费支出并提高能源利用效率的企业或机构。通过学习本文提供的方法,能够掌握如何构建和求解类似的优化问题,进而应用于实际工程项目中。 其他说明:文中提到的技术手段不仅限于储能调度,还可以扩展到其他类型的资源分配问题。对于想要深入了解优化理论及其工程应用的人来说,这是一个很好的入门案例。

    OFDRserver.zip

    OFDR分布式传感python代码 包括激光器远程控制 数据解调 这个是一个基于 PC 端的 **OFDR 系统(Optical Frequency Domain Reflectometry,光学频域反射测量)服务端程序**,主要用于控制光纤分布式传感实验中的硬件设备、采集数据并进行初步处理。 以下是该仓库的主要内容与功能总结: --- ### **项目功能简介** 该项目是一个 PC 端服务程序,用于实现 **光纤频域反射测量(OFDR)系统** 的控制和数据采集功能。其核心用途包括: 1. **与实验设备通信**: - 控制波长扫描光源(如 Santec、Yokogawa 等); - 控制 DAQ(数据采集卡,如 Advantech PCIE-1840); - 通过串口与其他设备通信(如温控模块)。 2. **数据采集与同步控制**: - 启动光源扫描; - 通过触发机制同步采集数据; - 采样数据存储为二进制或文本格式,供后续分析。 3. **图形化界面(GUI)操作**: - 使用 Qt 框架实现基本的图形界面,支持设备配置、参数设置、采集控制等功能。 4. **数据处理与显示**: - 实现基本的 FFT 处理; - 可视化信号波形; - 有部分代码实现数据的预处理和拟合操作。 OFDR 光线分布式传感 光频域反射技术 python

    西门子S7-1200 PLC Modbus RTU控制步进电机的梯形图程序实现及调试技巧

    内容概要:本文详细介绍了使用西门子S7-1200 PLC及其485信号板通过Modbus RTU协议控制步进电机的方法。主要内容涵盖硬件配置、关键程序代码、数据处理方法以及常见的调试技巧。文中提供了具体的梯形图代码示例,如初始化Modbus主站、主站轮询、数据指针配置等,并针对实际应用中可能出现的问题给出了详细的解决办法,例如波特率和校验位的正确设置、数据传输时的字节交换处理、通信超时等问题。此外,还强调了硬件连接的重要性,如正确的485接线方式和终端电阻的使用。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是那些需要使用PLC进行设备控制并熟悉西门子博途软件平台的用户。 使用场景及目标:帮助读者掌握利用西门子S7-1200 PLC和Modbus RTU协议控制步进电机的具体实现步骤,提高系统的可靠性和稳定性。适用于工厂自动化生产线、机械设备控制等领域。 其他说明:文中提到的一些细节问题(如波特率的实际值、校验方式的选择等)对于初次接触此类项目的开发者来说非常有价值。同时,作者还分享了一些实用的小贴士,如使用抓包工具来辅助调试,这有助于加快项目进度并减少不必要的麻烦。

    3dmax插件A自动道路.ms

    3dmax插件

    ChromeSetup.exe

    gugeliulanqi

    121311-基于MATLAB的混沌序列图像加密程序.doc

    121311_基于MATLAB的混沌序列图像加密程序.doc

    3dmax插件026-摆瓦片.ms

    3dmax插件

    四相开关磁阻电机Maxwell+Simplorer联合仿真优化及波形分析

    内容概要:本文详细介绍了四相开关磁阻电机在Maxwell和Simplorer联合仿真中的优化技巧和波形分析方法。首先,在Maxwell中,绕组匝数设置避免使用整数,正确选择磁滞回线模型,确保材料定义无误。其次,在Simplorer中,精确设置PWM生成模块的角度区间触发逻辑,防止因不合理设置导致转矩抖动。文中还强调了联合仿真过程中需要重点关注的三个波形:相电流波形、转矩波形以及径向力波形,并提供了针对不同波形异常的具体解决方案。此外,文章分享了一些实用的仿真加速技巧,如调整仿真步长、手动设置气隙网格层数等。最后,通过实例展示了如何利用FFT分析转矩脉动,并提出了降低转矩脉动的有效措施。 适合人群:从事电机设计、电磁场仿真及相关领域的工程师和技术人员。 使用场景及目标:帮助用户掌握四相开关磁阻电机联合仿真的关键技术要点,提高仿真效率和准确性,减少实验成本,为实际产品开发提供理论支持和技术指导。 其他说明:文章不仅涵盖了详细的仿真步骤和技术细节,还包括了许多基于实践经验得出的小贴士,有助于读者更好地理解和应用相关知识。

    信捷PLC与触摸屏在伺服自立袋灌装旋盖设备中的自动化控制实现

    内容概要:本文详细介绍了基于信捷PLC和触摸屏的伺服自立袋灌装旋盖设备及其全自动转盘式整机程序实例。文章首先阐述了项目的背景与需求,强调了设备需要实现高效、精准的灌装和旋盖操作,并确保自动化运行。其次,详细描述了电气图的设计,涵盖PLC的输入输出连接、伺服驱动器与电机的连接、传感器的接入以及触摸屏与PLC的通讯线路等。然后,展示了信捷PLC程序的具体实现,包括梯形图语言编写的灌装量控制程序片段,解释了各个指令的功能和流程。接下来,讨论了触摸屏程序设计,描述了如何通过触摸屏进行参数设置和设备状态监控。最后,总结了整个系统的实现过程,强调了各个环节之间的紧密联系,确保设备的稳定、高效运行。 适合人群:从事自动化设备编程的技术人员,尤其是对PLC编程和触摸屏应用有一定基础的人群。 使用场景及目标:适用于需要开发或优化类似自动化设备的企业和技术团队,旨在提高设备的自动化程度和工作效率,减少人工干预,确保生产过程的稳定性和准确性。 其他说明:文中不仅提供了详细的程序代码和电路图,还分享了许多调试经验和实用技巧,有助于读者更好地理解和应用相关技术。

    蓝桥杯嵌入式全部各个模块程序(模块化编程-例程)

    模块化代码,多个工程

    1.6 技能提升:设计一份个人简历.rp

    1.6 技能提升:设计一份个人简历.rp

    VS2010旗舰版的VB.NET版本任意进制互相转换程序源代码QZQ.zip

    VS2010旗舰版的VB.NET版本任意进制互相转换程序源代码QZQ

    电力系统基于深度强化学习的微网储能系统控制策略研究:优化充放电降低购电成本(含详细可运行代码及解释)

    内容概要:本文深入研究了基于深度强化学习(DRL)的微网储能系统控制策略。首先介绍了微网系统的组成及其特性,重点探讨了光伏发电、储能系统和负荷系统的关键组件数学模型。接着详细描述了Simulink仿真设计实现,包括微网环境模拟类(MicrogridEnv)、双重深度Q网络(Double DQN)算法的实现以及训练过程。为了验证该方法的有效性,文章还进行了对比实验,分别测试了规则策略、传统优化方法和DDQN策略的表现。实验结果显示,DDQN策略在成本节约、SOC合规率等方面明显优于其他两种方法。最后,本文提出了创新点与贡献总结,包括仿真-学习一体化框架、改进的DRL算法以及多维度验证,并展望了后续研究方向如多时间尺度优化、多能源协同、不确定性处理等。 适用人群:从事电力系统、微网技术研究的专业人士,以及对深度强化学习应用于能源领域感兴趣的科研人员和工程师。 使用场景及目标:①掌握微网储能系统的基本构成与工作原理;②理解如何利用深度强化学习优化微网储能控制策略;③学习具体的算法实现细节,包括环境搭建、DDQN算法实现和训练流程;④对比不同控制策略的效果,评估DDQN策略的优势。 其他说明:本文不仅提供了理论分析和技术实现,还展示了详细的实验验证过程,通过具体的实验数据证明了所提方法的有效性。此外,文中提及的多种改进措施和技术细节对于实际工程项目具有重要的参考价值。阅读本文有助于读者全面了解微网储能控制领域的最新进展,为相关研究和技术开发提供有益的指导。

    NET_ORM框架_多数据库支持_复杂数据模型_自动数据库架_1744170807.zip

    NET_ORM框架_多数据库支持_复杂数据模型_自动数据库架_1744170807.zip

    3dmax插件CGOMax物体隔离显示.ms

    3dmax插件

    基于MATLAB/Simulink的V2G微电网24小时仿真:柴油机、风光发电与电动汽车协同调度

    内容概要:本文详细介绍了利用MATLAB/Simulink构建的一个24小时微电网仿真模型,涵盖了柴油机、光伏发电、风力发电和V2G(车辆到电网)四个主要组成部分。文中探讨了各个组件的工作原理及其相互之间的协作机制,特别是在应对功率波动时的表现。具体来说,柴油机作为基荷电源,通过精确的转速控制确保稳定的电力供应;光伏和风力发电则引入了随机性和不确定性因素,如天气突变和风速波动,增加了仿真的真实性;V2G部分展示了电动汽车如何根据电网需求进行智能充放电调度,尤其在应对突发情况时表现出色。此外,文章还提到了一些常见的仿真错误及解决方法,强调了参数设置的重要性。 适合人群:对微电网仿真、V2G技术和MATLAB/Simulink有一定兴趣的研究人员和技术爱好者。 使用场景及目标:适用于希望深入了解微电网内部运作机制的人士,尤其是那些想要研究不同类型能源如何协同工作的专业人士。通过本案例的学习,读者能够掌握如何构建复杂的电力系统仿真模型,并理解各种能量来源在实际应用中的行为特征。 其他说明:文中提供了大量具体的代码片段和参数配置建议,有助于读者更好地理解和复现实验结果。同时,作者分享了一些实践经验,如如何处理数据归一化、避免单位换算错误等,对于初学者非常有帮助。

    【嵌入式竞赛】蓝桥杯嵌入式客观题备考指南:知识点详解与答题技巧提升蓝桥杯嵌

    内容概要:本文详细介绍了蓝桥杯嵌入式比赛的背景、赛制、硬件平台及软件环境,并着重分析了嵌入式客观题的重要性、考试范围及重点内容。蓝桥杯嵌入式比赛采用封闭、限时的比赛方式,硬件平台为STM32G431RBT6,软件环境涉及STM32CubeMX和MDK535。客观题占总分的15%,虽占比不大但每分关键,能影响最终排名和选手心态。考试范围涵盖模电、数电、单片机及STM32数据手册,具体包括放大器、逻辑门电路、寄存器配置等内容。文中通过真题示例与解析,阐述了答题技巧,如先易后难、排除法、注意细节及利用数据手册。备考建议包括选择合适的教材、官方资料和在线课程,建立知识体系,理论与实践结合,总结归纳错题,并合理规划时间。; 适合人群:对嵌入式开发感兴趣并准备参加蓝桥杯嵌入式比赛的学生或爱好者。; 使用场景及目标:①帮助参赛者了解蓝桥杯嵌入式比赛的赛制和要求;②指导参赛者掌握客观题的答题技巧;③提供详细的备考建议,帮助参赛者系统学习和复习相关知识。; 其他说明:嵌入式开发是一门实践性很强的学科,本文强调理论与实践相结合的学习方法,鼓励参赛者通过实验加深理解。同时,合理的时间规划和错题总结有助于提升学习效果。最后,文章表达了对参赛者的祝福和支持,希望他们在比赛中取得优异成绩。

Global site tag (gtag.js) - Google Analytics