(第二场)A Run 【动态规划】
链接:https://www.nowcoder.com/acm/contest/140/A
题目描述:
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.
输入描述:
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)
输出描述:
For each query,print a line which contains an integer,denoting the answer of the query modulo 1000000007.
案例
输入:
3 3
3 3
1 4
1 5
输出:
2
7
11
大概题意:
小白喜欢运动,他每秒可以走一米或者跑K米,有Q次查询,每次查询求跑0 ~ 【L,R】米的方案数;
思路:
一开始看到这道题想着是道规律题,结果花时间列数据找规律。。。
果然还是too young too simple,师兄花了短短的时间AC之后在群里丢给我们八个字“记忆化搜索,过了”。
想了那么多,这就是道纯粹的DP了啊,关键在于分开跑和走的方案,不能连续跑
状态:
dp[i][0] 走 i meters 的方案数
dp[i][1] 跑 i meters 的方案数
转移方程:
dp[i][0] = dp[i-1][1] + dp[i-1][0];
dp[i][1] = dp[i-k][0] (注意题目条件:不能连续跑,有队友一直卡在60%这里的原因)
!!!更新dp值的同时也要更新前缀和sum[i] (用于最后求答, 本人傻傻的还在后面查询的时候才计算前缀和,一直T)!!!
AC code:
#include <cstdio>
#include <iostream>
#include <cstring>
#define mod 1000000007
using namespace std; const int maxk = ; int Q, k;
long long int dp[maxk][], sum[maxk]; int main()
{
scanf("%d%d", &Q, &k);
for(int i = ; i < k; i++)
{
dp[i][] = ;
dp[i][] = ;
if(i > )
sum[i] = sum[i-] + dp[i][]+dp[i][];
}
dp[k][] = ;
sum[k] = sum[k-] + dp[k][];
for(int i = k; i < maxk; i++)
{
dp[i][] = ((dp[i-][] + dp[i-][]))%mod ;
dp[i][] = dp[i-k][];
sum[i] = sum[i-]+dp[i][]+dp[i][];
}
while(Q--)
{
int L, R;
long long int ans = ;
scanf("%d%d", &L, &R);
ans =(sum[R] - sum[L-] + mod)%mod;
printf("%lld\n", ans);
}
return ;
}
(第二场)A Run 【动态规划】的更多相关文章
- 牛客多校第二场A run(基础DP)
链接:https://www.nowcoder.com/acm/contest/140/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言2621 ...
- 2018牛客网暑假ACM多校训练赛(第二场)E tree 动态规划
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round2-E.html 题目传送门 - 2018牛客多校赛第二场 E ...
- 2018牛客暑期ACM多校训练营第二场(有坑未填)
第二场终于等来学弟 开始(被队友带飞)的开心(被虐)多校之旅 A run A题是一个递推(dp?)+前缀和 因为看数据量比较大 就直接上前缀和了 一个比较简单的递推 没有太多难点 签到题 需要注意 ...
- 牛客网 暑期ACM多校训练营(第二场)A.run-动态规划 or 递推?
牛客网暑期ACM多校训练营(第二场) 水博客. A.run 题意就是一个人一秒可以走1步或者跑K步,不能连续跑2秒,他从0开始移动,移动到[L,R]的某一点就可以结束.问一共有多少种移动的方式. 个人 ...
- 本周进步要点20161023(含李笑来第二场live笔记要点)
本周主要忙于去武汉参加iDOF2016智能数字油田会议,会上做了题为“油田SOA及云平台的系统思考与实践”的报告,为了准备这篇报告,用到了一些以前学过的知识,具体内容见“参加iDOF2016会议的收获 ...
- 2014百度之星预赛(第二场)——Best Financing
2014百度之星预赛(第二场)--Best Financing Problem Description 小A想通过合理投资银行理財产品达到收益最大化.已知小A在未来一段时间中的收入情况,描写叙述为两个 ...
- Contest1592 - 2018-2019赛季多校联合新生训练赛第二场(部分题解)
Contest1592 - 2018-2019赛季多校联合新生训练赛第二场 D 10248 修建高楼(模拟优化) H 10252 组装玩具(贪心+二分) D 传送门 题干 题目描述 C 市有一条东西走 ...
- NOI.AC NOIP模拟赛 第二场 补记
NOI.AC NOIP模拟赛 第二场 补记 palindrome 题目大意: 同[CEOI2017]Palindromic Partitions string 同[TC11326]Impossible ...
- DevOps Workshop 研发运维一体化(北京第二场) 2016.04.27
北京不亏为首都,人才济济,对微软DevOps解决方案感兴趣的人太多.我们与微软公司临时决定再家一场培训. 我之前在博客中(DevOps Workshop 研发运维一体化第一场(微软亚太研发集团总部)h ...
- CTF-i春秋网鼎杯第二场misc部分writeup
CTF-i春秋网鼎杯第二场misc部分writeup 套娃 下载下来是六张图片 直接看并没有什么信息 一个一个查看属性 没有找到有用信息 到winhexv里看一下 都是标准的png图片,而且没有fla ...
随机推荐
- 兼容IE和Firefox获得keyBoardEvent对象
<input type="text" name="words" id="search_txt" class="seachIp ...
- Swift构造器链
IDE:Xcode Version7.3.1 指定构造器: 1>名字为init的方法前没有前缀(子类重写时有override除外), 2>一个类中至少有一个指定构造器,其必须初始化类中的所 ...
- Linux学习笔记之(1)~Linux有趣的历史概览
献给知道mono,了解Jexus,对.net混搭技术感兴趣的朋友. 1965年,Bell.MIT和GE公司发起Multics计划,目标是实现一个操作系统可以让大型主机实现连接三百个终端的目标.(那个时 ...
- Java - 网络IO的阻塞
最近学习时碰到事件驱动和非阻塞的相关知识,随之想到了Java中的Reactor.io与nio的一些东西:在前辈的博客上翻了翻.复习复习,在此记录一番. 实在找不到比较大点的东西,于是随便弄了个压缩包, ...
- Shiro登录校验
shiro是一种权限认证框架,实现一个简单的登录鉴权: 1.控制器层: @Controller @RequestMapping("/blogger") public class B ...
- Error:Annotation processors must be explicitly declared now.
环境 Android Studio 3.0 Gradle 3.0.0 gradle 4.1 Error Error:Execution failed for task ':app:javaPreCom ...
- 虚拟机下centos时间不正确的方便解决方法
就是用NTP了,通过外部的服务同步时间. ntpdate us.pool.ntp.org | logger -t NTP 如果没有ntpdate ,可以使用 yum install ntpdate 进 ...
- 9、springboot之处理静态资源
在springboot项目中的resource根目录下建立三个文件夹static.public.resources 里面都放同样名字的图片 但是图片内容不一样 启动springboot之后输入 htt ...
- 如何将一个SpringBoot简便地打成一个war包(转)
为什么要把SpringBoot打成war包 正常情况下SpringBoot项目是以jar包的形式,通过命令行: java -jar demo.jar 来运行的,并且SpringBoot是内嵌Tomca ...
- js判断值是否是数字
js如何判断值是否是数字 1. isNaN()方法2. 正则表达式var re = /^[0-9]+.?[0-9]*$/; //判断字符串是否为数字 //判断正整数 /^[1-9]+[0-9]*]*$ ...