备战蓝桥杯 Day6(学习动态规划)
引入
支付问题
假设有无限多的硬币,硬币面值为1,5,11。现在需要支付15元,问最少使用的硬币数?
贪心策略:15=11*1+1*4,1+4=5
真正的答案15=3*5 3dp的两个性质
- 最优子结构
- 无后效性
dp的两大要素
- 1.状态
- 2.状态转移方程
思路
1.状态 dp[i]--支付i元所用的最小方案数
2.状态转移方程 dp[i]=min{dp[i-11],dp[i-5],dp[i-1]}+1
代码实现
/*
状态f(w)支付w元所用的最少的硬币的数量
求f(15)
1.先选11元的:f(4)+1=5
2.先选5元的:f(10)+1=3
3.先选1元的:f(14)+1=5
f(15)=min{f(4)+1,f(10)+1,f(14)+1}求f(15)=min{f(4)+1,f(10)+1,f(14)+1}
求f(14)=min{f(3)+1,f(9)+1,f(13)+1}
求f(11)=min{f(0)+1,f(6)+1,f(10)+1}f(i)=min{f(i-11),f(i-5),f(i-1)}+1
*/
#include<iostream>
using namespace std;
const int N=1e4+10;
int dp[N];
int main()
{int w; cin >> w;//支付金额int mi = 0x3f3f3f3f;//最小方案数字//时间复杂度O(n)for (int i = 1; i <= w; i++)//注意下标{if (i >= 1) mi= min(mi,dp[i - 1])+1;if (i >= 5) mi= min(mi,dp[i - 5])+1;if (i >= 111) mi= min(mi,dp[i - 11])+1;dp[i] = mi;//打印dp表cout << "dp[" << i << "]=" << dp[i] << endl;}cout << dp[w] << endl;return 0;
}
二维格子问题
小明要回家,必须从左上角出发,回到右下角的家,每次向右或者向下走,每个点的值都代表体力消耗,从起点到家,最少体力开销
1 2 5
8 3 9
7 4 6
dp
- 1.状态 dp[i][j] 从起点(1,1)到(i,j)点最小体力花费
- 2.状态转移方程 dp[i][j]=min{dp[i-1][j],dp[i][j-1]}+a[i][j]
#include<iostream>
using namespace std;
const int N=1e3+10;
int dp[N][N];
int a[N][N];//存体力
int main()
{int n; cin >> n;for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)cin >> a[i][j];//边界单独处理//行for (int j = 1; j <= n; j++)dp[1][j] = dp[1][j - 1] + a[1][j];//列for (int i = 1; i <= n; i++)dp[i][1] = dp[i-1][1] + a[i][1];for (int i = 2; i <= n; i++)for (int j = 2; j <= n; j++)dp[i][j] = min(dp[i - 1][j], dp[i][j-1]) + a[i][j];//dp表for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){cout << dp[i][j] << "\t";}cout << endl;}cout << dp[n][n] << endl;return 0;
}
1288:三角形最佳路径问题
【题目描述】
如下所示的由正整数数字构成的三角形:
7 3 8 8 1 0 2 7 4 4 4 5 2 6 5从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,和最大的路径称为最佳路径。你的任务就是求出最佳路径上的数字之和。
注意:路径上的每一步只能从一个数走到下一层上和它最近的下边(正下方)的数或者右边(右下方)的数。
【输入】
第一行为三角形高度100≥h≥1,同时也是最底层边的数字的数目。
从第二行开始,每行为三角形相应行的数字,中间用空格分隔。
【输出】
最佳路径的长度数值。
【输入样例】
5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5【输出样例】
30
#include<iostream>
using namespace std;
const int N=1e2+10;
int dp[N][N], a[N][N], h, mx;//dp[i][j]:从(1,1)到(i,j)的所有路径中,数字加和最大的路径的数字加和。
int main()
{cin >> h;for (int i = 1; i <= h; ++i)for (int j = 1; j <= i; ++j)cin >> a[i][j];for (int i = 1; i <= h; ++i)for (int j = 1; j <= i; ++j)dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - 1]) + a[i][j];for (int j = 1; j <= h; ++j)//求从(1,1)到第h行某位置路径上数字加和的最大值mx = max(mx, dp[h][j]);for (int i = 1; i <= h; ++i){for (int j = 1; j <= i; ++j){cout << dp[i][j] << " ";}cout << endl;}cout << mx;return 0;
}
相关文章:
备战蓝桥杯 Day6(学习动态规划)
引入 支付问题 假设有无限多的硬币,硬币面值为1,5,11。现在需要支付15元,问最少使用的硬币数? 贪心策略:1511*11*4,145 真正的答案153*5 3 dp的两个性质 最优子结构无后效性 dp的两大要素 1.状态2.状态转移方程 思路…...
【uniapp】自定义步骤条样式
代码实现 <view class"steps-wrap"><view class"flex-box"><view class"number active-number">1</view><view class"desc active-desc">步骤1</view><view :class"[line, activeStep …...
UE5 C++ UObject实例化
一.创建UObject C类 在MyObject中声明结构体FMyDataTableStruct 在MyPawn里面,先将头文件里包含 MyObject.h 在MyPawn中声明一个UMyObject类型的指针 TSubclassOf 是提供 UClass 类型安全性的模板类。例如您在创建一个投射物类,允许设计者指定伤害类型…...
Appium环境安装与架构介绍
Appium架构 Appium 设计哲学 不需要为了自动化而重新编译或修改被测应用不应该让移动端自动化测试限定在某种语言或者某个具体的框架不要为了移动端的自动化测试而重新造轮子移动端自动化测试应该是开源的 Appium 架构 Appium 架构图如下: Appium 的核心是一个 …...
Vue+Vite项目初建(axios+Unocss+iconify)
一. 创建项目 npx --package vue/cli vue 项目成功启动后,进入http://localhost:3200,即可进入创建好的页面(假设启动端口为3200) 二. 测试网络通讯模块 假设有本地服务器地址localhost:8000提供接口服务,接口为localhost:8000/token&#…...
ASUS华硕枪神8笔记本电脑G614JIR,G814JVR,G634JYR,G834JZR工厂模式出厂Windows11系统 带重置还原功能
适用ROG枪神8系列笔记本型号: G614JIR、G614JVR、G634JYR、G634JZR G814JIR、G814JVR、G834JYR、G834JZR 链接:https://pan.baidu.com/s/1tYZt6XFNC2d6YmwTbtFN7A?pwd3kp8 提取码:3kp8 带有ASUS RECOVERY恢复功能、自带所有驱动、出厂主…...
Python入门:常用模块—xml模块
xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单 xml的格式如下,就是通过<>节点来区别数据结构的: <data> <country name"Liechtenstein"> <rank updated"yes"…...
蓝队应急响应工具箱v2024.1
1 蓝队工具箱 v2024.1 2 简介 蓝队工具箱是为打造一款专业级应急响应的集成多种工具的工具集,由真实应急响应环境所用到的工具进行总结打包而来,由 ChinaRan404,W 啥都学,清辉等开发者编写.把项目现场中所用到的工具连同环境一同打包,并实…...
Linux中获取字符串长度与获取子字符串
一、 获取字符串长度 #!/bin/bash string"jobs" echo ${string} # 输出结果: jobs echo ${#string} # 输出结果: 4 二、提取子字符串 以下实例从字符串第 2 个字符开始截取 4 个字符: #!/bin/bash str"敢于亮剑决不后退" echo ${str:2:…...
Rust语言之sha-256爆破
文章目录 一、实现Sha-256加密1.创建项目2.编写Cargo.toml文件3.编写程序代码 二、sha256爆破1.获取命令行参数2.读取文件3.校验输入参数4.暴力破解 一、实现Sha-256加密 SHA-256是一种安全哈希算法,主要特点是将输入的数据(无论长度)通过特定…...
Rust中的字符串处理及相关方法详解
在Rust中,字符串是一种非常重要的数据类型,而String类型则提供了对动态可变字符串的支持。本文将介绍一些常见的字符串处理方法以及相关示例代码。 创建字符串 在Rust中,有多种方式创建字符串,以下是一些常见的例子:…...
NS安装-CentOS服务器安装Nightscout CGM
NS CGM 安装必要条件 有自己的云服务器好像没有2,有云服务器就行了 安装顺序 先安装数据库,目前支持的是 MongoDB ,官方推荐4,其实目前最新版本就行。可以用宝塔安装,比较简单克隆代码,我是放到 /opt/ns…...
利用ChatGPT提升工作效率
随着科技的飞速发展,人工智能逐渐成为我们生活的一部分。ChatGPT作为一种先进的自然语言处理技术,已经在各个领域取得了显著的成果。本文将探讨如何利用ChatGPT提升工作效率,让我们的生活变得更加便捷。 一、什么是ChatGPT? ChatG…...
django admin页面美化
美化 Django Admin 页面可以通过多种方式实现,从简单的 CSS 样式调整到完全自定义模板。以下是一些建议和步骤来美化 Django Admin 页面: 1. 使用 CSS 覆盖默认样式 这是最简单的方法,你可以通过添加自定义 CSS 文件来覆盖 Django Admin 的…...
Git 操作以及Git 常见问题
Git 操作 git 教程:https://www.runoob.com/git/git-tutorial.html 基本概念 工作区:克隆项目到本地后,项目所在的文件夹; 暂存区:从工作区添加上来的变更(新增,修改,删除ÿ…...
如何学习和规划类似ChatGPT这种人工智能(AI)相关技术
学习和规划类似ChatGPT这种人工智能(AI)相关技术的路径通常包括以下步骤: 学习基础知识: 学习编程:首先,你需要学习一种编程语言,例如Python,这是大多数人工智能项目的首选语言。数学…...
4 月 9 日至 4 月 10 日,Hack.Summit() 2024 首聚香江
Hack.Summit() 是一系列 Web3 开发者大会。2024 年的活动将于 2024 年 4 月 9 日至 4 月 10 日在香港数码港举行。自十年前首次举办以来,此次会议标志着 Hack.Summit() 首次在亚洲举办,香港被选为首次亚洲主办城市,这对 Hack VC 和该地区都具…...
[力扣 Hot100]Day29 删除链表的倒数第 N 个结点
题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 出处 思路 两个指针间隔n,一趟遍历解决。 代码 class Solution { public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* phead;ListNode* …...
探索设计模式的魅力:掌握命令模式-解锁软件设计的‘遥控器’
🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,并且坚持默默的做事。 引言:探索命令模式的奥秘 软件设计领域充满挑战与机遇,命令模式…...
LNMP搭建discuz论坛
discuz论坛是一种网络论坛软件,也称bbs,它是一种用于在互联网上建立论坛社区的程序系统。只哟中功能强大的论坛软件,可以帮助用户建立一个专业、完善的论坛社区,并且可以实现多种功能,如搭建用户注册、登录、查看主题、…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...
在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7
在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤: 第一步: 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为: // 改为 v…...
