【蓝桥杯冲冲冲】动态规划初步[USACO2006 OPEN] 县集市
蓝桥杯备赛 | 洛谷做题打卡day13
文章目录
- 蓝桥杯备赛 | 洛谷做题打卡day13
- 题目描述
- 输入格式
- 输出格式
- 样例 #1
- 样例输入 #1
- 样例输出 #1
- 提示
- 样例说明
- 数据规模与约定
- 思路:
- 方程:
- 题解代码
- 我的一些话
-
[USACO2006 OPEN] 县集市 The County Fair
题目描述
每年,FJ 都喜欢去参加县集市,集市上有 n n n 个展位,每个摊位 i i i 都会在当天的特定时间 p i p_i pi 发放精美的礼品。FJ 已经听说了这一点,他希望能收集尽可能多的礼品和他的奶牛们一起分享。要想获得摊位 i i i 发放的礼品,FJ 必须确保时间点 p i p_i pi 时位于摊位 i i i。
为了获得尽可能多的礼品,FJ 进行了一番详细的调查,通过调查FJ确定了从摊位 i i i 到摊位 j j j 所花费的时间 t i , j t_{i,j} ti,j。集市的布局很不寻常,这会导致,FJ如果在从 i i i 到 j j j 的过程中选择从其他摊位绕行,可能会比直接从 i i i 到 j j j 所花费的时间更少,然而我们耿直的 FJ 从来不这么做,如果他想从摊位 i i i 到摊位 j j j,他一定会花 t i , j t_{i,j} ti,j 的时间从 i i i 走到 j j j。另外由于集市所在地崎岖不平,所以 t i , j t_{i,j} ti,j 可能与 t j , i t_{j,i} tj,i 不相同。
FJ 在时间 0 0 0 时,位于 1 1 1 号摊位,请计算他最多可以收集多少奖品。
输入格式
第 1 1 1 行:一个整数 n n n,表示摊位的数量。
第 2 2 2 行:共 n n n 个整数,其中第 i + 1 i+1 i+1 的正数 p i p_i pi 表示摊位 i i i 发放礼品的时间。
第 n + 2 n+2 n+2 到第 n 2 + n + 1 n^2+n+1 n2+n+1 行:共 n 2 n^2 n2 行,第一个 n n n 行描述了 FJ 从摊位 1 1 1 走到到摊位 1 1 1… n n n 所需时间( t 1 , 1 , t 1 , 2 , . . . t 1 , n t_{1,1},t_{1,2}, ...t_{1,n} t1,1,t1,2,...t1,n),接下来的 n n n 行描述了 FJ 从摊位 2 2 2 走到摊位 1 1 1… n n n 所需时间( t 2 , 1 , t 2 , 2 , . . . t 2 , n t_{2,1},t_{2,2}, ...t_{2,n} t2,1,t2,2,...t2,n),以此类推,最后的 n n n 行描述了 FJ 从摊位 n n n 走到摊位 1 1 1… n n n 所需要的时间 t n , 1 , t n , 2 , . . . t n , n t_{n,1},t_{n,2}, ...t_{n,n} tn,1,tn,2,...tn,n。对于任意摊位 i i i, t i , i = 0 t_{i,i}=0 ti,i=0。
输出格式
一行:一个整数,表示 FJ 最多可以领取到的奖品数量。
样例 #1
样例输入 #1
4 13 9 19 3 0 10 20 3 4 0 11 2 1 15 0 12 5 5 13 0样例输出 #1
3提示
样例说明
样例中集市上共有 4 4 4 个摊位。 1 1 1 号摊位在时间 13 13 13 发放礼品, 2 2 2 号摊位在时间 9 9 9 发放礼品, 3 3 3 号摊位在时间 19 19 19 发放礼品, 4 4 4 号摊位在时间 3 3 3 发放礼品。
FJ 首先从 1 1 1 号摊位走到 4 4 4 号摊位,用时 3 3 3,并在时间 3 3 3 到达,正好可以领取到奖品,接着他从摊位 4 4 4 走到摊位 2 2 2 ,用时 5 5 5,并在时间 8 8 8 到达,在等待 1 1 1 个时间点后可以领取 2 2 2 号摊位的礼品,接着他从 2 2 2 号摊位走到 1 1 1 号摊位,用时 4 4 4,并在时间 13 13 13 到达,从而可以收集到第 3 3 3 个礼品。
数据规模与约定
对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 400 1\le n\le 400 1≤n≤400, 0 ≤ p i ≤ 1 0 9 0\le p_i\le 10^9 0≤pi≤109, 1 ≤ t i , j ≤ 1 0 6 1\le t_{i,j}\le 10^6 1≤ti,j≤106。
思路:
这道题目我们可以用动态规划做。我们先对时间顺序排序,时间小的在前面,因为只有先经过小的时间才可以推算大的时间。接着我们就有了一个数组,用来记录在前 *i* 个礼物中最多能拿几个礼物,且第 *i* 个礼物一定要取。当然这个要经过前面的推算才能得出。
方程:
我们需要通过前面的时间推算那么我们就可以做一个判断:如果前面那个礼物发放的时间加上那个集市到这个集市的时间小于等于这个礼物发放的时间,那么就可以从那个集市过来,之所以是要一定小于等于,是因为这个礼物必须要取。通过所有可以到达的集市,更新数组的最大值。

题解代码
学会利用新知,自己多试试并尝试积攒一些固定解答方案,debug,以下是题解代码 ~
#include <bits/stdc++.h>
using namespace std;
struct o//每一个集市的信息,下面的t和b分别是发放礼物的时间和集市的编号,记录编号是因为下面的排序有可能打乱编号
{int t;int b;
};
int p(o o1,o o2)//定义排序的优先级,发放礼物时间前的集市在前面
{return o1.t<o2.t;
}
int dp[401],ans;//把它们放在外面,自动清零
int main()
{o s[401];//定义所有的集市int n,t[401][401];//集市数量和走这两个集市的路的时间scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&s[i].t);s[i].b=i;}for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)scanf("%d",&t[i][j]);sort(s+1,s+n+1,p);s[0].b=1,s[0].t=0;//赋初始值,在第0分钟,FJ在第一个集市for(int i=1;i<=n;i++)for(int j=0;j<i;j++)if(t[s[j].b][s[i].b]+s[j].t<=s[i].t)dp[i]=max(dp[j]+1,dp[i]),ans=max(ans,dp[i]);//通过方程更新最大值printf("%d",ans);return 0;
}
我的一些话
-
前几天一直在学习图论算法,今天看看动态规划算法初步吧,动态规划dp有一定难度,需要通盘的考虑和理解,以及扎实的数据结构基础才能独立写出AC代码。但无论难易,大家都要持续做题,保持题感喔!一起坚持(o´ω`o)
-
如果有非计算机专业的uu自学的话,关于数据结构的网课推荐看b站上青岛大学王卓老师的课,讲的很细致,有不懂都可以私信我喔
-
总结来说思路很重要,多想想,多在草稿纸上画画,用测试数据多调试,debug后成功编译并运行出正确结果真的会感到很幸福!
-
关于之前蓝桥杯备赛的路线和基本方法、要掌握的知识,之前的博文我都有写,欢迎大家关注我,翻阅自取哦~
-
不管什么都要坚持吧,三天打鱼两天晒网无法形成肌肉记忆和做题思维,该思考的时候一定不要懈怠,今天就说这么多啦,欢迎评论留言,一起成长:)
相关文章:
【蓝桥杯冲冲冲】动态规划初步[USACO2006 OPEN] 县集市
蓝桥杯备赛 | 洛谷做题打卡day13 文章目录 蓝桥杯备赛 | 洛谷做题打卡day13题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示样例说明数据规模与约定 思路:方程: 题解代码我的一些话 [USACO2006 OPEN] 县集市 The County Fair 题目描述 每年…...
C#,入门教程(30)——扎好程序的笼子,错误处理 try catch
上一篇: C#,入门教程(29)——修饰词静态(static)的用法详解https://blog.csdn.net/beijinghorn/article/details/124683349 程序员语录:凡程序必有错,凡有错未必改! 程序出错的原因千千万&…...
操作教程|JumpServer堡垒机结合Ansible进行批量系统初始化
运维人员常常需要对资产进行系统初始化的操作,而初始化服务器又是一项繁琐的工作,需要花费运维人员大量的时间和精力。为了提高效率,许多组织会使用自动化工具和脚本来简化这些任务。自动化工具的运用可以大幅降低运维人员的工作量࿰…...
序列化VS反序列化
序列化、反序列化定义 如果我们需要持久化 Java 对象比如将 Java 对象保存在文件中,或者在网络传输 Java 对象,这些场景都需要用到序列化。 序列化(Serialization)是指将对象转换为字节序列的过程,也可以称之为对象的持…...
新数智空间:阿里云边缘云持续保持中国公有云市场第一
全球领先的 IT 市场研究和咨询公司 IDC 发布 《中国边缘云市场解读(2023H1)》报告 中国边缘公有云服务市场 阿里云持续第一 稳居市场第一,“边缘”逆势生长 近日,全球领先的 IT 市场研究和咨询公司 IDC 最新发布《中国边缘云市…...
【开源】基于JAVA语言的陕西非物质文化遗产网站
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 设计目标2.2 研究内容2.3 研究方法与过程2.3.1 系统设计2.3.2 查阅文献2.3.3 网站分析2.3.4 网站设计2.3.5 网站实现2.3.6 系统测试与效果分析 三、系统展示四、核心代码4.1 查询民间文学4.2 查询传统音乐4.3 增改传统舞…...
C++(Qt)软件调试---静态分析工具clang-tidy(18)
C(Qt)软件调试—静态分析工具clang-tidy(18) 文章目录 C(Qt)软件调试---静态分析工具clang-tidy(18)1、概述2、clang-tidy基本用法3、目前已有检查项4、Qt Creator中安装clang-tidy5、Qt Creator中使用clang-tidy6、Clang-Tidy配置…...
2401llvm,clang的重构引擎
Clang的重构引擎 展示如何使用重构API中的各种原语来实现不同的重构. LibTooling库提供了几个在开发重构操作时,使用的其他API. 可用重构引擎来实现,用编辑器或IDE中的选择启动的本地重构.可结合AST匹配器和重构引擎,以实现不适合源选择和/或必须查询某些指定节点的AST的重构…...
【C语言深度剖析——第四节(关键字4)】《C语言深度解剖》+蛋哥分析+个人理解
追求本质,不断进步 本文由睡觉待开机原创,转载请注明出处。 本内容在csdn网站首发 欢迎各位点赞—评论—收藏 如果存在不足之处请评论留言,共同进步! 这里写目录标题 一、空间的申请1.变量定义1.1变量定义的概念:1.2变…...
鸿蒙开发系列教程(五)--ArkTS语言:组件开发
1、基础组件 组件API文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V2/84_u58f0_u660e_u5f0f_u5f00_u53d1_u8303_u5f0f_uff09-0000001427744776-V2 查看组件API 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 容…...
Java:正则表达式讲解加举例,简洁易懂
正则表达式定义: 由一些特定的字符组成,代表的是一个规则。 作用:1.校验数据是否合法。2.可以在一段文本中查找满足要求的内容。 先自己写一个方法去校验qq号,比较与正则表达式的区别: 正则表达式的代码暂时可以不…...
2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解
2️⃣机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解 个人简介一算法概述二算法思想2.1 KNN的优缺点 三实例演示3.1电影分类3.2使用KNN算法预测 鸢(yuan)尾花 的种类3.3 预测年收入是否大于50K美元 个人简介 🏘️&…...
WordPress顶部管理工具栏怎么添加一二级自定义菜单?
默认情况下,WordPress前端和后台页面顶部都有一个“管理工具栏”,左侧一般就是站点名称、评论、新建,右侧就是您好,用户名称和头像。那么我们是否可以在这个管理工具栏中添加一些一二级自定义菜单呢? 其实,…...
Linux安装ossutil工具且在Jenkins中执行shell脚本下载文件
测试中遇到想通过Jenkins下载OSS桶上的文件,要先在linux上安装ossutil工具,记录安装过程如下: 一、下载安装ossutil,使用命令 1.下载:wget https://gosspublic.alicdn.com/ossutil/1.7.13/ossutil64 2.一定要赋权限…...
Docker命令---搜索镜像
介绍 使用docker命令搜索镜像。 命令 docker search 镜像命令:版本号示例 以搜索ElasticSearch镜像为例 docker search ElasticSearch...
docker使用http_proxy配置代理
钢铁知识库,一个学习python爬虫、数据分析的知识库。人生苦短,快用python。 在内网服务器中,docker经常需要下载拉取镜像,但由于没有网络要么只能手动导入镜像包,又或者通过http_proxy代理到其它服务器下载。 解决方法…...
综述:自动驾驶中的 4D 毫米波雷达
论文链接:《4D Millimeter-Wave Radar in Autonomous Driving: A Survey》 摘要 4D 毫米波 (mmWave) 雷达能够测量目标的距离、方位角、仰角和速度,引起了自动驾驶领域的极大兴趣。这归因于其在极端环境下的稳健性以及出色的速度和高度测量能力。 然而…...
蓝桥杯:1.特殊日期(Java)
题目描述 对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。 请问从1900年1月1日至9999年12月31日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。 例如&…...
服务异步通讯之 SpringAMQP【微服务】
文章目录 一、初识 MQ1. 同步通讯2. 异步通讯3. MQ 常见框架 二、RabbitMQ 入门1. 概述和安装2. 常见消息模型3. 基础模型练习 三、SpringAMQP1. 简单队列模型2. 工作队列模型3. 发布订阅模型3.1 Fanout Exchange3.2 Direct Exchange3.3 Topic Exchange 一、初识 MQ 1. 同步通…...
LED闪烁
这段代码是用于STM32F10x系列微控制器的程序,主要目的是初始化GPIOA的Pin 0并使其按照特定的模式进行闪烁。下面是对这段代码的逐行解释: #include "stm32f10x.h":这一行包含了STM32F10x系列微控制器的设备头文件。这个头文件包含…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》
🧠 LangChain 中 TextSplitter 的使用详解:从基础到进阶(附代码) 一、前言 在处理大规模文本数据时,特别是在构建知识库或进行大模型训练与推理时,文本切分(Text Splitting) 是一个…...
java高级——高阶函数、如何定义一个函数式接口类似stream流的filter
java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用(Math::max) 2 函数接口…...
