P10108 [GESP202312 六级] 闯关游戏

题目大意

如题
、

分析

设最佳通关方案为 { s 1 , s 2 , . . . , s k } \{s_1,s_2,...,s_k\} {s1,s2,...,sk},其中 s i s_i si 代表第 i i i 次到达的关卡( ≥ N \ge N N 的不算)。

  • a k = N − 1 a_k=N-1 ak=N1 时,方案变为 { s 1 , s 2 , . . . , s k − 1 , N − 1 } \{s_1,s_2,...,s_{k-1},N-1\} {s1,s2,...,sk1,N1}
    方案的属性:

    1. 总分。原方案的总分 = 子方案的总分+ b N − 1 b_{N-1} bN1。由于,原方案要求解的是最高总分。因此,子方案要求解的也是最高总分。
    2. 目的地。子方案的目的地变为 N − 1 N-1 N1

    综上:子方案反映的问题是目的地为 N − 1 N-1 N1,能够获得的最高总分?

  • a k = N − 2 a_k=N-2 ak=N2 时,方案变为 { s 1 , s 2 , . . . , s k − 1 , N − 2 } \{s_1,s_2,...,s_{k-1},N-2\} {s1,s2,...,sk1,N2}
    方案的属性:

    1. 总分。原方案的总分 = 子方案的总分+ b N − 2 b_{N-2} bN2。由于,原方案要求解的是最高总分。因此,子方案要求解的也是最高总分。
    2. 目的地。子方案的目的地变为 N − 2 N-2 N2

    综上:子方案反映的问题是目的地为 N − 2 N-2 N2,能够获得的最高总分?
    ⋮ \vdots

  • a k = 1 a_k=1 ak=1 时,方案变为 { s 1 , s 2 , . . . , s k − 1 , 1 } \{s_1,s_2,...,s_{k-1},1\} {s1,s2,...,sk1,1}
    方案的属性:

    1. 总分。原方案的总分 = 子方案的总分+ b 1 b_1 b1。由于,原方案要求解的是最高总分。因此,子方案要求解的也是最高总分。
    2. 目的地。子方案的目的地变为 1 1 1

    综上:子方案反映的问题是目的地为 1 1 1,能够获得的最高总分?

需要注意的是,这些子问题的合法需满足:存在这么一个通道,可以从子方案的目的地,直接到达 ≥ N \ge N N 的地方。

因为,原问题不存在这么一个准确的目的地,这与子问题不符合。所以,我们需要将超过 N N N 的情况,拆解为:到达 N + 1 N+1 N+1 N + 2 N+2 N+2,…, 2 N 2N 2N 的问题(之所以是 2 N 2N 2N 是因为, a i ≤ N a_i\le N aiN)。

现在,所有的问题都变为:目的地为 i i i,能够获得的最高总分?

对其方案重新进行分析:

  • a k = j a_k=j ak=j 时,方案变为 { s 1 , s 2 , . . . , s k − 1 , j , i } \{s_1,s_2,...,s_{k-1},j,i\} {s1,s2,...,sk1,j,i}
    方案的属性:

    1. 总分。原方案的总分 = 子方案的总分+ b j b_j bj。由于,原方案要求解的是最高总分。因此,子方案要求解的也是最高总分。
    2. 目的地。子方案的目的地变为 j j j

    综上:子方案反映的问题是目的地为 j j j,能够获得的最高总分?

需要注意的是,必须存在一种通道使得 j j j 能够到达 i i i 这种情况才合法。因此,直接通过枚举所有通道,就可以获得所有合法情况。

问题的状态: d p i dp_i dpi 代表目的地为 i i i,能够获得的最高总分?

状态转移式: d p i = max ⁡ ( d p i − a j + b j ) ( 1 ≤ j ≤ m ) dp_i=\max(dp_{i-a_j}+b_j)(1\le j \le m) dpi=max(dpiaj+bj)(1jm)

问题的初始化: d p 0 = 0 dp_0=0 dp0=0

问题的答案: max ⁡ ( d p i ) ( n + 1 ≤ i ≤ 2 n ) \max(dp_i)(n+1\le i \le2n) max(dpi)(n+1i2n)

示例程序

#include<iostream>
#include<algorithm>using namespace std;const int N = 1e4 + 10;int a[N],b[N * 2],dp[N * 2];int main(){int n,m;cin >> n >> m;for(int i = 0; i <= m - 1; i++){cin >> a[i];}for(int i = 0; i <= n - 1; i++){cin >> b[i];}for(int i = 0; i <= 2 * n; i++) dp[i] = -1e9;dp[0] = 0;int maxn = -1e9;for(int i = 1; i <= 2 * n - 1; i++){for(int j = 0; j <= m - 1; j++){if(i - a[j] >= 0){dp[i] = max(dp[i],dp[i - a[j]] + b[i - a[j]]);}}if(i >= n){maxn = max(maxn,dp[i]);}}cout << maxn;return 0;
}

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

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

相关文章

vllm的使用方式,入门教程

vLLM是一个由伯克利大学LMSYS组织开源的大语言模型推理框架&#xff0c;旨在提升实时场景下的大语言模型服务的吞吐与内存使用效率。以下是详细的vLLM使用方式和入门教程&#xff1a; 1. 前期准备 在开始使用vLLM之前&#xff0c;建议先掌握一些基础知识&#xff0c;包括操作…

web的分离不分离:前后端分离与不分离全面分析

让我们一起走向未来 &#x1f393;作者简介&#xff1a;全栈领域优质创作者 &#x1f310;个人主页&#xff1a;百锦再新空间代码工作室 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[1504566…

HDFS扩缩容及数据迁移

1.黑白名单机制 在HDFS中可以通过黑名单、白名单机制进行节点管理&#xff0c;决定数据可以复制/不可以复制到哪些节点。 黑名单通常是指在HDFS中被标记为不可用或不可访问的节点列表&#xff0c;这些节点可能由于硬件故障、网络问题或其他原因而暂时或永久性地无法使用。当一…

数据如何安全“过桥”?分类分级与风险评估,守护数据流通安全

信息化高速发展&#xff0c;数据已成为企业的核心资产&#xff0c;驱动着业务决策、创新与市场竞争力。随着数据开发利用不断深入&#xff0c;常态化的数据流通不仅促进了信息的快速传递与共享&#xff0c;还能帮助企业快速响应市场变化&#xff0c;把握商业机遇&#xff0c;实…

[Web 安全] PHP 反序列化漏洞 —— PHP 序列化 反序列化

关注这个专栏的其他相关笔记&#xff1a;[Web 安全] 反序列化漏洞 - 学习笔记-CSDN博客 0x01&#xff1a;PHP 序列化 — Serialize 序列化就是将对象的状态信息转化为可以存储或传输的形式的过程&#xff0c;在 PHP 中&#xff0c;通常使用 serialize() 函数来完成序列化的操作…

DeepSeek-R1:模型部署与应用实践

深入探索DeepSeek-R1&#xff1a;模型部署与应用实践 在当今人工智能飞速发展的时代&#xff0c;大语言模型&#xff08;LLMs&#xff09;已经成为众多领域的核心驱动力。DeepSeek-R1作为一款备受瞩目的模型&#xff0c;在自然语言处理任务中展现出了强大的能力。本文将深入探…

Java 大视界 -- 基于 Java 的大数据机器学习模型压缩与部署优化(99)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

socket编程详解

TCP报文格式 0. 举例 首先来看一个TCP连接的例子&#xff0c;如图1所示&#xff0c;分别给出了服务器和客户端所调用的API&#xff0c;对这些函数有一个总体认识之后&#xff0c;再逐个对每个函数详细介绍。 图1 创建TCP连接时服务器、客户端调用的API 1. socket() 注&#xf…

企业知识库搭建:14款开源与免费系统选择

本文介绍了以下14 款知识库管理系统&#xff1a;1.Worktile&#xff1b;2.PingCode&#xff1b;3.石墨文档&#xff1b; 4. 语雀&#xff1b; 5. 有道云笔记&#xff1b; 6. Bitrix24&#xff1b; 7. Logseq等。 在如今的数字化时代&#xff0c;企业和团队面临着越来越多的信息…

Spring Cloud Alibaba学习 3- Sentinel入门使用

Spring Cloud Alibaba学习 3- Sentinel入门使用 中文文档参考&#xff1a;Sentinel中文文档 一. SpringCloud整合Sentinel 1.1 下载Sentinel-Dashboard Sentinel下载地址&#xff1a;Sentinel-Dashboard 到下载目录&#xff0c;cmd输入 java -jar sentinel-dashboard-1.8…

STM32——HAL库开发笔记23(定时器4—输入捕获)(参考来源:b站铁头山羊)

定时器有四个通道&#xff0c;这些通道既可以用来作为输入&#xff0c;又可以作为输出。做输入的时候&#xff0c;可以使用定时器对外部输入的信号的时间参数进行测量&#xff1b;做输出的时候&#xff0c;可以使用定时器向外输出精确定时的方波信号。 一、输入捕获 的基本原理…

Spring MVC框架六:Ajax技术

精心整理了最新的面试资料&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 简介 jQuery.ajax Ajax原理 结语 创作不易&#xff0c;希望能对大家给予帮助 想要获取更多资源? 点击链接获取

通过返回的key值匹配字典中的value值

需求 页面中上面搜索项有获取字典枚举接口&#xff0c;table表格中也有根据key匹配字典中的value 方案一 需要做到的要求 这里上面下拉列表是一个组件获取的字典&#xff0c;下面也是通过字典匹配&#xff0c;所以尽量统一封装一个函数&#xff0c;每个组件保证最少变动tabl…

Python游戏编程之赛车游戏6-2

3.2 move()方法的定义 Player类的move()方法用于玩家控制汽车左右移动&#xff0c;当玩家点击键盘上的左右按键时&#xff0c;汽车会相应地进行左右移动。 move()方法的代码如图7所示。 图7 move()方法的代码 其中&#xff0c;第20行代码通过pygame.key.get_pressed()函数获…

通俗易懂:RustDesk Server的搭建及使用

最近有很多远程桌面连接的需求&#xff0c;使用花生壳、topdesk等现有的远程控制又有数量上的限制&#xff0c;因此利用公司现有的具有固定IP地址的服务器&#xff0c;搭建了一台 RustDesk Server来解决工作中的痛点。 结论是丝毫不输哪些收费的软件&#xff0c;不论是剪切板、…

SQL注入练习

目录 一、如何绕过 information schema 字段过滤注入 二、如何绕过 order by 语句过滤注入 三、seacmsv9 实现报错注入数据 一、如何绕过 information schema 字段过滤注入 1、使用其他系统表&#xff0c;不同数据库有各自的系统表&#xff0c;可替代information_schema。 …

手机放兜里,支付宝“碰一下”被盗刷?

大家好&#xff0c;我是小悟。 近期&#xff0c;网络上关于“支付宝‘碰一下’支付易被盗刷”的传言甚嚣尘上&#xff0c;不少用户对此心生疑虑。 首先&#xff0c;要明确一点&#xff1a;“碰一下”支付并不会像某些传言中所描述的那样容易被隔空盗刷。这一观点已经得到了支付…

MySQL MHA 部署全攻略:从零搭建高可用数据库架构

文章目录 1.MHA介绍2.MHA组件介绍3.集群规划4.服务器初始化5.MySQL集群部署5.1 安装MySQL集群5.2 配置一主两从5.3 测试MySQL主从5.4 赋予MHA用户连接权限 6.安装MHA环境6.1 安装MHA Node6.2 安装MHA Manager 7.配置MHA环境8.MySQL MHA高可用集群测试8.1 通过VIP连接MySQL8.2模…

国标28181协议在智联视频超融合平台中的接入方法

一. 国标28181介绍 国标 28181 协议全称是《安全防范视频监控联网系统信息传输、交换、控制技术要求》&#xff0c;是国内视频行业最重要的国家标准&#xff0c;目前有三个版本&#xff1a; 2011 年&#xff1a;推出 GB/T 28181-2011 版本&#xff0c;为安防行业的前端设备、平…

ThinkPHP:配置Redis并使用

文章目录 一、环境说明二、php.ini中配置Redis扩展1、下载php_redis.dll文件2、安装Redis扩展3、修改php.ini4、重启wamp服务 三、thinkphp6项目中修改配置及使用 一、环境说明 我的是64位Windows10环境&#xff0c;安装了wamp环境集成工具&#xff0c;方便学习使用。 php版本…