蓝桥杯每日真题 - 第19天
题目:(费用报销)
题目描述(13届 C&C++ B组F题)
解题思路:
1. 问题抽象
本问题可以看作一个限制条件较多的优化问题,核心是如何在金额和时间约束下选择最优方案:
-
动态规划是理想的解决方法。
-
我们定义
dp[i]
为到第 i 天为止的最大报销金额。
2. 日期统一化
为了方便处理时间差,需将日期(月份和天数)统一转化为一年中的第几天。例如:
-
1 月 1 日为第 1 天;
-
2 月 1 日为第 32 天(31+1)。
这一步能让日期差的计算简单且高效。
3. 动态规划状态转移
-
状态表示:
dp[i]
表示到第 i 天为止的最大报销金额。 -
转移方程:对每张票据:
-
如果报销当前票据:
dp[i] = max(dp[i-1], dp[pre] + v[i])
,其中pre = i - K
。 -
如果不报销当前票据:
dp[i] = dp[i-1]
。
-
4. 优化思路
-
按票据日期排序,确保动态规划时的时间顺序正确。
-
动态更新
dp
数组,逐步累积最大金额。
代码实现(C语言):
#include <stdio.h>
#include <stdlib.h>typedef struct {int day, v;
} dps;int N, M, K;
int m[1009], d[1009];
dps dp[1009];
int a[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int p[366] = {0};// 计算每月对应的天数累计和
int month(int mi) {int sum = 0;for (int i = 0; i < mi - 1; i++) sum += a[i];return sum;
}// 将日期统一成一年中的第几天
void becomeday() {for (int i = 0; i < N; i++) {dp[i].day = month(m[i]) + d[i];p[dp[i].day] = dp[i].v;}
}// 比较函数,用于qsort排序
int cmp(const void *a1, const void *a2) {dps s1 = *(dps *)a1;dps s2 = *(dps *)a2;return s1.day - s2.day;
}int main() {scanf("%d%d%d", &N, &M, &K);for (int i = 0; i < N; i++) {scanf("%d%d%d", &m[i], &d[i], &dp[i].v);}// 转换日期并排序becomeday();qsort(dp, N, sizeof(dp[0]), cmp);// 动态规划for (int i = 1; i < 366; i++) {int pre = i - K >= 0 ? i - K : 0;if (p[i] + p[pre] <= M) {p[i] = p[i] + p[pre] > p[i - 1] ? p[i] + p[pre] : p[i - 1];} else {p[i] = p[i - 1];}}printf("%d", p[365]);return 0;
}
得到运行结果:
难度分析
⭐️⭐️⭐️⭐️⭐️难难难难难难
总结
本题核心在于将日期处理与动态规划相结合,解决了多条件限制下的最优选择问题。
以下是总结要点:
-
日期统一化:通过天数累计简化日期差值计算。
-
动态规划核心:记录每一天的最大报销金额,并逐步更新。
-
代码结构清晰:日期处理、排序和动态规划分模块实现,方便理解和维护。
相关文章:
蓝桥杯每日真题 - 第19天
题目:(费用报销) 题目描述(13届 C&C B组F题) 解题思路: 1. 问题抽象 本问题可以看作一个限制条件较多的优化问题,核心是如何在金额和时间约束下选择最优方案: 动态规划是理想…...
CentOS7.9.2009的yum更换vault地窖保险库过期源,epel的archive归档源 笔记241117
CentOS7.9.2009的yum更换vault地窖保险库过期源,epel的archive归档源 笔记241117 备份 /etc/yum.repos.d 文件夹 tempUri/etc/yum.repos.d ; sudo cp -a $tempUri $tempUri.$(date %0y%0m%0d%0H%0M%0Sns%0N).bak清空 /etc/yum.repos.d 文件夹 sudo rm -rf /etc…...
Spark SQL大数据分析快速上手-完全分布模式安装
【图书介绍】《Spark SQL大数据分析快速上手》-CSDN博客 《Spark SQL大数据分析快速上手》【摘要 书评 试读】- 京东图书 大数据与数据分析_夏天又到了的博客-CSDN博客 Hadoop完全分布式环境搭建步骤-CSDN博客,前置环境安装参看此博文 完全分布模式也叫集群模式。将Spark目…...
Java面试题2024-Java基础
Java基础 1、 Java语言有哪些特点 1、简单易学、有丰富的类库 2、面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高) 3、与平台无关性(JVM是Java跨平台使用的根本) 4、可靠安全 5、支持多线程 2、…...
局域网协同办公软件,2024安全的协同办公软件推荐
在2024年,随着数字化转型的深入和远程工作需求的增加,协同办公软件已成为企业提升工作效率、优化沟通流程的重要工具。 以下是一些值得推荐的安全的协同办公软件: 钉钉 功能全面:钉钉是一款综合性极强的企业级协同软件ÿ…...
osg、osgearth简介及学习环境准备
一、osg简介(三维场景图渲染与调度引擎) OSG是Open Scene Graphic 的缩写,OSG于1997年诞生于以为滑翔机爱好者之手,Don burns 为了对滑翔机的飞行进行模拟,对openGL的库进行了封装,osg的雏形就这样诞生了&…...
nodejs基于微信小程序的云校园的设计与实现
摘 要 相比于传统的校园管理方式,智能化的管理方式可以大幅提高校园的管理效率,实现了云校园管理的标准化、制度化、程序化的管理,有效地防止了云校园信息的不规范管理,提高了信息的处理速度和精确度,能够及时、准确地…...
uni-app快速入门(十)--常用内置组件(下)
本文介绍uni-app的textarea多行文本框组件、web-view组件、image图片组件、switch开关组件、audio音频组件、video视频组件。 一、textarea多行文本框组件 textarea组件在HTML 中相信大家非常熟悉,组件的官方介绍见: textarea | uni-app官网uni-app,un…...
golang基础
在 Go 中字符串是不可变的,例如下面的代码编译时会报错: cannot assign to s[0] 但如果真的想要修改怎么办呢?下面的代码可以实现: var s string "hello" s [ 0 ] c s : "hello" c : [] b…...
Selenium + 数据驱动测试:从入门到实战!
引言 在软件测试中,测试数据的多样性和灵活性对测试覆盖率至关重要。而数据驱动测试(Data-Driven Testing)通过将测试逻辑与数据分离,极大地提高了测试用例的可维护性和可扩展性。本文将结合Selenium这一流行的测试工具࿰…...
LLaMA与ChatGLM选用比较
目录 1. 开发背景 2. 目标与应用 3. 训练数据 4. 模型架构与规模 5. 开源与社区支持 6. 对话能力 7. 微调与应用 8. 推理速度与资源消耗 总结 LLaMA(Large Language Model Meta AI)和 ChatGLM(Chat Generative Language Model)都是强大的大型语言模型,但它们有一…...
GPTZero:高效识别AI生成文本,保障学术诚信与内容原创性
产品描述 GPTZero 是一款先进的AI文本检测工具,专为识别由大型语言模型(如ChatGPT、GPT-4、Bard等)生成的文本而设计。它通过分析文本的复杂性和一致性,判断文本是否可能由人类编写。GPTZero 已经得到了超过100家媒体机构的报道&…...
C/C++ 优化,strlen 示例
目录 C/C optimization, the strlen examplehttps://hallowed-blinker-3ca.notion.site/C-C-optimization-the-strlen-example-108719425da080338d94c79add2bb372 揭开优化的神秘面纱... 让我们来谈谈 CPU 等等,SIMD 是什么? 为什么 strlen 是一个很…...
【动手学深度学习Pytorch】1. 线性回归代码
零实现 导入所需要的包: # %matplotlib inline import random import torch from d2l import torch as d2l import matplotlib.pyplot as plt import matplotlib import os构造人造数据集:假设w[2, -3.4],b4.2,存在随机噪音&…...
深入理解PyTorch中的卷积层:工作原理、参数解析与实际应用示例
深入理解PyTorch中的卷积层:工作原理、参数解析与实际应用示例 在PyTorch中,卷积层是构建卷积神经网络(CNNs)的基本单元,广泛用于处理图像和视频中的特征提取任务。通过卷积操作,网络可以有效地学习输入数…...
DataGear 5.2.0 发布,数据可视化分析平台
DataGear 企业版 1.3.0 已发布,欢迎体验! http://datagear.tech/pro/ DataGear 5.2.0 发布,图表插件支持定义依赖库、严重 BUG 修复、功能改进、安全增强,具体更新内容如下: 重构:各模块管理功能访问路径…...
uniapp: vite配置rollup-plugin-visualizer进行小程序依赖可视化分析减少vender.js大小
一、前言 在之前文章《uniapp: 微信小程序包体积超过2M的优化方法(主包从2.7M优化到1.5M以内)》中,提到了6种优化小程序包体积的方法,但并没有涉及如何分析common/vender.js这个文件的优化,而这个文件的大小通常情况下…...
深度学习:如何复现神经网络
深度学习:如何复现神经网络 要复现图中展示的卷积神经网络(CNN),我们需详细了解和配置每层网络的功能与设计理由。以下将具体解释各层的配置以及设计选择的原因,确保网络设计的合理性与有效性。 详细的网络层配置与设…...
Spring Boot与MyBatis-Plus的高效集成
Spring Boot与MyBatis-Plus的高效集成 引言 在现代 Java 开发中,MyBatis-Plus 作为 MyBatis 的增强工具,以其简化 CRUD 操作和无需编写 XML 映射文件的特点,受到了开发者的青睐。本篇文章将带你一步步整合 Spring Boot 与 MyBatis-Plus&…...
【Unity ShaderGraph实现流体效果之Function入门】
Unity ShaderGraph实现流体效果之Node入门(一) 前言Shader Graph NodePosition NodeSplit NodeSubtract NodeBranch Node 总结 前言 Unity 提供的Shader Graph在很大程度上简化了开发者对于编写Shader的工作,只需要拖拽即可完成一个视觉效果…...
Spark RDD sortBy算子执行时进行数据 “采样”是什么意思?
一、sortBy 和 RangePartitioner sortBy 在 Spark 中会在执行排序时采用 rangePartitioner 进行分区,这会影响数据的分区方式,并且这一步骤是通过对数据进行 “采样” 来计算分区的范围。不过,重要的是,sortBy 本身仍然是一个 tr…...
React-useRef与DOM操作
#题引:我认为跟着官方文档学习不会走歪路 ref使用 组件重新渲染时,react组件函数里的代码会重新执行,返回新的JSX,当你希望组件“记住”某些信息,但又不想让这些信息触发新的渲染时,你可以使用ref&#x…...
Mistral AI 发布 Pixtral Large 模型:多模态时代的开源先锋
Mistral AI 最新推出的 Pixtral Large 模型,带来了更强的多模态能力。作为一款开源的多模态模型,它不仅在参数量上达到 1240 亿,更在文本和图像理解上实现了质的飞跃。 模型亮点 1. 多模态能力再升级 Pixtral Large 配备了 123B 参数的解码器…...
Windows、Linux多系统共享蓝牙设备
Windows、Linux多系统共享蓝牙设备 近来遇到一个新问题,就是双系统共享蓝牙鼠标。因为一直喜欢在Windows、Linux双系统之间来回切换,而每次切换系统蓝牙就必须重新配对,当然,通过网络成功解决了问题。 通过这个问题,稍…...
C语言 | Leetcode C语言题解之第564题寻找最近的回文数
题目: 题解: #define MAX_STR_LEN 32 typedef unsigned long long ULL;void reverseStr(char * str) {int n strlen(str);for (int l 0, r n-1; l < r; l, r--) {char c str[l];str[l] str[r];str[r] c;} }ULL * getCandidates(const char * n…...
wsl虚拟机中的dockers容器访问不了物理主机
1 首先保证wsl虚拟机能够访问宿主机IP地址,wsl虚拟机通过vEthernet (WSL)的地址访问,着意味着容器也要通过此IP地址访问物理主机。 2 遇到的问题:wsl虚拟机中安装了docker,用在用到docker容器内的开发环境,但是虚拟机…...
Spark RDD 的宽依赖和窄依赖
通俗地理解 Spark RDD 的 宽依赖 和 窄依赖,可以通过以下比喻和解释: 1. 日常生活比喻 假设你在管理多个团队完成工作任务: 窄依赖:每个团队只需要关注自己的分工,完成自己的任务。例如,一个人将纸张折好&…...
二进制转十进制
解题思路分析 二进制转十进制原理:二进制数转换为十进制数的基本原理是按位权展开相加。对于一个二进制数,从右往左每一位的位权依次是将每一位上的数字(0 或 1)乘以其对应的位权,然后把所有结果相加,就得…...
深度学习:神经网络中的非线性激活的使用
深度学习:神经网络中的非线性激活的使用 在神经网络中,非线性激活函数是至关重要的组件,它们使网络能够捕捉和模拟输入数据中的复杂非线性关系。这些激活函数的主要任务是帮助网络解决那些无法通过简单的线性操作(如权重相乘和偏…...
Python缓存:两个简单的方法
缓存是一种用于提高应用程序性能的技术,它通过临时存储程序获得的结果,以便在以后需要时重用它们。 在本文中,我们将学习Python中的不同缓存技术,包括functools模块中的 lru_cache和 cache装饰器。 简单示例:Python缓…...
网站后台培训方案/百度广告代理商
一、什么是CDN? 内容分发网络(Content Delivery Network,简称CDN)是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。CDN应用广泛,支持多种行业、多种场景内容加速ÿ…...
网站建设 技术 哪些内容/最新网站发布
各位考生:各学院拟录取名单已公示完毕。最后录取名单以教育部审核通过的为准。(公示时间:2017年3月31日-2017年4月14日)(公示时间:2017年4月1日-2017年4月17日)(公示时间:2017年4月1日-2017年4月17日)(公示时间:2017年…...
无锡专业网站排名推广/网络营销和传统营销的区别有哪些
问题:本站对该题的题解方法,c下可ac, 用python测试结果TLE, 过不了倒数第二个testcase。详情: 我用了不同于题解方法ac后,看到题解很简洁,便照用python照写了一个测速度,结果TLE。而…...
龙泉做网站哪家好/如何制作网页链接
AI相关 网易有道AI团队自主设计研发了高性能端侧机器学习计算库——EMLL(Edge ML Library),并已在近日开源。EMLL 为加速端侧 AI 推理而设计,提供基于端侧处理器的高性能机器学习计算库,支持fp32、fp16、int8等数据类型,已在网易…...
公司网站如何建设教程/搜索引擎营销的过程
本着“以教带学,Learning by Doing”的想法,我于上周加入了Bob组织的HiBlock区块链技术布道群。这个群可不太好混,群规要求每个成员必需每周有输出,连续两次交白卷就要被踢出群。 在这样的压力之下,我决定开一个新坑&a…...
有个专门做装修的网站/品牌营销是什么
PHP导出excel想必很多童鞋都碰到了,使用phpexcel类也确实方便,但导出大量数据的时候就没那么简单了,常常会伴随一些超时或内存溢出的问题,下面就给大家介绍一些方法,文章由原作者整理,出处PHPExcel导出大量…...