【洛谷 P8725】[蓝桥杯 2020 省 AB3] 画中漂流 题解(动态规划)

[蓝桥杯 2020 省 AB3] 画中漂流

题目描述

在梦境中,你踏上了一只木䇝,在江上漂流。

根据对当地的了解,你知道在你下游 D D D 米处有一个峡谷,如果你向下游前进大于等于 D D D 米则必死无疑。

现在你打响了急救电话, T T T 秒后救援队会到达并将你救上岸。水流速度是 1 m / s 1 \mathrm{~m} / \mathrm{s} 1 m/s,你现在有 M M M 点体力。每消耗一点体力,你可以划一秒桨使船向上游前 进 1 m 1 \mathrm{~m} 1 m,否则会向下游前进 1 m 1 \mathrm{~m} 1 m (水流)。 M M M 点体力需在救援队赶来前花光。因为江面太宽了,凭借你自己的力量不可能上岸。

请问,有多少种划桨的方案可以让你得救。

两个划桨方案不同是指:存在某一秒钟,一个方案划桨,另一个方案不划。

输入格式

输入一行包含三个整数 D D D T T T M M M

输出格式

输出一个整数,表示可以让你得救的总方案数,答案可能很大,请输出方案数除以 1000000007 1000000007 1000000007(即 1 0 9 + 7 10^9+7 109+7)的余数。

样例 #1

样例输入 #1

1 6 3

样例输出 #1

5

提示

对于 50 % 50 \% 50% 的评测用例, 1 ≤ T ≤ 350 1 \leq T \leq 350 1T350

对于所有评测用例, 1 ≤ T ≤ 3000 , 1 ≤ D ≤ T , 1 ≤ M ≤ 1500 1 \leq T \leq 3000,1 \leq D \leq T,1 \leq M \leq 1500 1T3000,1DT1M1500

蓝桥杯 2020 第三轮省赛 AB 组 I 题。


思路

首先定义一个二维数组 dp,其中 dp[i][j] 表示过了 i 秒,划了 j 下的方案数。初始化 dp[0][0] 为 1,表示在开始时(没有过去任何秒数,也没有划过任何次数)只有一种方案,即不做任何操作。

him 中的最小值,表示在 i 秒内最多可以划 h 次。这是因为在任何给定的时间 i,划桨的次数 j 不能超过时间 i(因为每次划桨都需要一秒钟)和体力值 m(因为每次划桨都需要消耗一点体力)。对于每一秒(从 0 到 t),都会有两种可能的操作:划桨或者不划桨。

  1. 对于划桨的情况,如果在 i 秒时划了 j 次,那么在 i+1 秒时就会划 j+1 次,因此 dp[i+1][j+1] 应该增加 dp[i][j]

  2. 对于不划桨的情况,只有当剩余距离大于 0(d - i + 2 * j > 0)时才能不划桨,这里的剩余距离是指距离峡谷的距离减去已经过去的秒数加上划桨的距离(因为每次划桨都会逆流而上,距离峡谷会远一些)。此时在 i+1 秒时划的次数仍然是 j,因此 dp[i+1][j] 应该增加 dp[i][j]

最后,输出 dp[t][m],即过了 t 秒,划了 m 下的方案数,这就是可以得救的总方案数。

注意

为了防止结果过大而溢出,每次计算 dp[i+1][j+1]dp[i+1][j] 时都取模 MOD 1 0 9 + 7 10^9+7 109+7 )。


AC代码

#include <algorithm>
#include <iostream>
#define mp make_pair
#define AUTHOR "HEX9CF"
using namespace std;
using ll = long long;const int N = 1e4 + 7;
const int INF = 0x3f3f3f3f;
const ll MOD = 1e9 + 7;int d, t, m;
// 过了i秒,划了j下
ll dp[N][N];int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> d >> t >> m;dp[0][0] = 1;for (int i = 0; i <= t; i++) {// i秒内最多划i下int h = min(m, i);for (int j = 0; j <= h; j++) {if (dp[i][j]) {if (j <= h) {// 划dp[i + 1][j + 1] = (dp[i + 1][j + 1] + dp[i][j]) % MOD;}if (d - i + 2 * j > 0) {// 如果还有剩余距离,可以不划dp[i + 1][j] = (dp[i + 1][j] + dp[i][j]) % MOD;}}}}// M 点体力需在救援队赶来前花光cout << dp[t][m];return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/748577.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用sys给python运行程序传参

使用sys给python运行程序传参 import sys def main(argv1,argv2):img1 cv2.imread(argv1)img2 cv2.imread(argv2)finalImage_Stitching().blending(img1,img2)cv2.imwrite(panorama.jpg, final) if __name__ __main__:try: main(sys.argv[1],sys.argv[2])except IndexE…

【Eviews实战】——时序的平稳性检验

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…

C++ 入门篇

目录 1、了解C 2、C关键字 2、命名空间 2.1 命名空间的定义 2.2 命名空间的使用 3. C输入与输出 4.缺省参数 4.1 缺省参数的概念 4.2 缺省参数的分类 5. 函数重载 5.1 函数重载的概念 5.2 C中支持函数重载的原理--名字修饰 6. 引用 6.1 引用概念 6.2 引用…

SQLiteC/C++接口详细介绍之sqlite3类(四)

快速跳转文章列表&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;三&#xff09; 下一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;五&#xff09; 编写不易&#xff0c;有用的朋友点个赞或加粉一下万分感…

day05-SpringBootWeb请求响应

请求响应&#xff1a; 请求&#xff08;HttpServletRequest&#xff09;&#xff1a;获取请求数据响应&#xff08;HttpServletResponse&#xff09;&#xff1a;设置响应数据 BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xf…

Python环境安装及Selenium引入

Python环境安装 环境下载 Download Python | Python.org 环境安装 需使用管理员身份运行 查看环境是否安装成功 python --version 如果未成功则检查环境变量配置 安装 Selenium 库 pip install selenium Selenium 可以模拟用户在浏览器中的操作&#xff0c;如点击按钮、填写…

轻松玩转消息通信:SimpleAmqpClient 和 RabbitMQ 在C++中的终极指南

Rabbmq服务端 安装 这里我使用docker安装rabbitmq服务端,没有安装的就先去看其他的博客安装rabbitmq或者docker #拉取rabbitmq docker pull rabbitmq:management #运行rabbitmq,记得打开防火墙端口 docker run -d --hostname rabbitsrv --name rabbit -p 5672:5672 -p 15672…

前端和后端权限控制【笔记】

前端权限设置【笔记】 前言版权推荐前端权限设置需求效果实现资源 后端权限控制1.给所有前端请求都携带token2.添加拦截器3.配置到WebMvcConfiguration4.更多的权限验证 最后 前言 2024-3-15 18:27:26 以下内容源自《【笔记】》 仅供学习交流使用 版权 禁止其他平台发布时删…

Seata 2.x 系列【11】多数据源分布式事务

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Seata 版本 2.0.0 本系列Spring Boot 版本 3.2.0 本系列Spring Cloud 版本 2023.0.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 概述2. 多数据…

SQLiteC/C++接口简介

快速跳转文章列表&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLite——世界上部署最广泛的开源数据库&#xff08;简介&#xff09; 下一篇&#xff1a;SQLiteC/C接口详细介绍&#xff08;一&#xff09; 引言&#xff1a; 作为一种轻量级、嵌入式关系型数据库…

洛谷 2216.理想的正方形

考察的是单调队列。 思路&#xff1a;我们要想不以高的时间复杂度进行计算矩阵的最值&#xff0c;就需要用到单调队列&#xff0c;可以降下一阶时间复杂度。 可以看一下上一篇题解“子矩阵”&#xff0c;跟这道题是一样的思路&#xff0c;只不过最后处理的结果是不一样的&…

MAC M芯片 Anaconda安装

Anaconda安装 1.M芯片下载AnaConda 1.M芯片下载AnaConda https://www.anaconda.com/download 安装完成 conda的版本是24.1.2

Go语言中的make和new:内存分配与对象创建的巧妙之道

Go语言中的make和new&#xff1a;内存分配与对象创建的巧妙之道 Go语言作为一门简洁而强大的编程语言&#xff0c;提供了多种用于动态内存分配和对象创建的关键词。其中&#xff0c;make和new是两个常见且常被混淆的关键词。本文将深入讲解Go语言中make和new的区别&#xff0c;…

python来判断密码强弱-类

设计者&#xff1a;ISDF 版本&#xff1a;v1.0 日期&#xff1a;2019/4/3设计者&#xff1a;ISDF 版本&#xff1a;v2.0 日期&#xff1a;2024/4/3 class PasswordTool:密码工具类def __init__(self,password):#类的属性self.password passwordself.stregth_level 0def check…

考研C语言复习进阶(5)

目录 1. 为什么使用文件 2. 什么是文件 2.1 程序文件 2.2 数据文件 2.3 文件名 3. 文件的打开和关闭 3.1 文件指针 3.2 文件的打开和关闭 4. 文件的顺序读写 ​编辑 ​编辑 4.1 对比一组函数&#xff1a; ​编辑 5. 文件的随机读写 5.1 fseek 5.2 ftell 5.3 rewind…

【C语言】linux内核pci_save_state

一、中文注释 //include\linux\pci.h /* 电源管理相关的例程 */ int pci_save_state(struct pci_dev *dev);//drivers\pci\pci.c /*** pci_save_state - 在挂起前保存PCI设备的配置空间* dev: - 我们正在处理的PCI设备*/ int pci_save_state(struct pci_dev *dev) {int i;/* X…

谷歌网络营销方案有几种?​

谷歌作为海外的头部工具&#xff0c;本身其实就有多种工具可以供你使用&#xff0c;在这里说说谷歌那些工具 Google My Business&#xff0c;对于小企业或者本地服务来说&#xff0c;把自己的业务信息优化并完善在Google My Business上是个不错的选择。这样当人们在附近搜索相…

微信小程序云开发教程——墨刀原型工具入门(表单组件)

引言 作为一个小白&#xff0c;小北要怎么在短时间内快速学会微信小程序原型设计&#xff1f; “时间紧&#xff0c;任务重”&#xff0c;这意味着学习时必须把握微信小程序原型设计中的重点、难点&#xff0c;而非面面俱到。 要在短时间内理解、掌握一个工具的使用&#xf…

【NC223888】红色和紫色

题目 红色和紫色 博弈论&#xff0c;想得出来思路就简单&#xff0c;想不出来就难。一般使用猜测法。 思路 如果小红随意取一个格子涂色&#xff0c;那么小紫怎么涂色才是她的最优选择呢&#xff1f; 假设小紫只能选择小红涂色的格子的相邻格子或者是最近斜对角的一个格子涂色…

LeetCode 2684.矩阵中移动的最大次数:一列一列处理,只记能到哪行(BFS)

【LetMeFly】2684.矩阵中移动的最大次数&#xff1a;一列一列处理&#xff0c;只记能到哪行(BFS) 力扣题目链接&#xff1a;https://leetcode.cn/problems/maximum-number-of-moves-in-a-grid/ 给你一个下标从 0 开始、大小为 m x n 的矩阵 grid &#xff0c;矩阵由若干 正 整…