hdu 1864 最大报销额

人工智能训练师技能等级认定四级技能考核试卷-样题4 本文为人工智能训练师四级技能考核试卷,包含六个实操考核项目,总时长150分钟。考核内容涵盖:1)车牌数据集规范评估与格式处理;2)车牌数据集采集代码修改与数据处理;3)房价预测数据集加载、预处理与可视化分析;4)车牌标注数据集审核与修正;5)螺丝螺母检测数据集的平台创建与共享;6)螺丝螺母数据的去噪处理与标注优化。要求考生使用Python编程、数据处理平台和标注工具完成各项任务,重点考察数据加载、格式转换、缺失值处理、数据可视化、标注审核及平台操作等技能。所有操作需在配备Python3.7和深度学习平台的W 阅读详情

题目:

Description
现有一笔经费可以报销一定额度的发票。允许报销的发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不超过给定额度的最大报销额。

Input
测试输入包含若干测试用例。每个测试用例的第1行包含两个正数 Q 和 N,其中 Q 是给定的报销额度,N(<=30)是发票张数。随后是 N 行输入,每行的格式为:
m Type_1:price_1 Type_2:price_2 … Type_m:price_m
其中正整数 m 是这张发票上所开物品的件数,Type_i 和 price_i 是第 i 项物品的种类和价值。物品种类用一个大写英文字母表示。当N为0时,全部输入结束,相应的结果不要输出。

Output
对每个测试用例输出1行,即可以报销的最大数额,精确到小数点后2位。

Sample Input
200.00 3
2 A:23.50 B:100.00
1 C:650.00
3 A:59.99 A:120.00 X:10.00
1200.00 2
2 B:600.00 A:400.00
1 C:200.50
1200.50 3
2 B:600.00 A:400.00
1 C:200.50
1 A:100.00
100.00 0

Sample Output
123.50
1000.00
1200.50

思路:

01背包问题,嗯,注意数据处理,都是小数点后两位,那么乘100扩大成整数就好做多了。第一次做内存超限了,诶,做题太死板了,看到是01背包问题,就直接往上套模板。
第一次做,dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+w[i]);

虽然答案是对的,但是内存消耗太大,没有必要。
第二次,dp[j]=max(dp[j],dp[j-w[i]]+w[i]);

代码:

第一次

#include<iostream>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int dp[35][35 * 100000]; //dp[i][j]表示前i个物品,在容量为j的最大...
int w[35];
int main()
{
    double Q, A, B, C, price;
    char type;
    int N,m;
    bool flag;
    while (scanf("%lf%d", &Q, &N) && N){
        int sum = Q * 100;
        int k = 1;
        memset(dp,0,sizeof(dp));
        for (int i = 0; i < N; i++){
            scanf("%d", &m);
            A = 0;
            B = 0;
            C = 0;
            flag = true;
            for (int j = 0; j < m; j++){
                scanf(" %c:%lf",&type,&price);
                price *= 100;
                if (type == 'A'&& A + price <= 60000){
                    A += price;
                }
                else if (type == 'B'&& B + price <= 60000){
                    B += price;
                }
                else if (type == 'C'&& C + price <= 60000){
                    C+=price;
                }
                else{
                    flag = false;
                }
            }
            if (A + B + C <= 100000 && flag){
                w[k++] = A + B + C;
            }
        }
        for (int i = 1; i <= k; i++){
            for (int j = 0; j <= sum; j++){
                if (j < w[i]){
                    dp[i][j] = dp[i - 1][j];
                }
                else{
                    dp[i][j] = max(dp[i-1][j],dp[i-1][j-w[i]]+w[i]);
                }
            }
        }
        printf("%.2lf\n",dp[k][sum]/100.0);
    }
    return 0;
}

第二次

#include<iostream>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int dp[35 * 100000];
int w[35];
int main()
{
    double Q, A, B, C, price;
    char type;
    int N, m;
    bool flag;
    while (scanf("%lf%d", &Q, &N) && N){
        int sum = Q * 100;
        int k = 0;
        memset(dp, 0, sizeof(dp));
        for (int i = 0; i < N; i++){
            scanf("%d", &m);
            A = 0;
            B = 0;
            C = 0;
            flag = true;
            for (int j = 0; j < m; j++){
                scanf(" %c:%lf", &type, &price);
                price *= 100;
                if (type == 'A'&& A + price <= 60000){
                    A += price;
                }
                else if (type == 'B'&& B + price <= 60000){
                    B += price;
                }
                else if (type == 'C'&& C + price <= 60000){
                    C += price;
                }
                else{
                    flag = false;
                }
            }
            if (A + B + C <= 100000 && flag){
                w[k++] = A + B + C;
            }
        }
        for (int i = 0; i < k; i++){
            for (int j = sum; j>=w[i]; j--){
                dp[j] = max(dp[j], dp[j - w[i]] + w[i]);
            }
        }
        printf("%.2lf\n", dp[sum] / 100.0);
    }
    return 0;
}
Multica 自托管部署与使用入门:从上线到让 AI Agent 真正干活 Multica是一个将AI Agent作为团队成员的任务协作平台,支持自托管部署。本文介绍了完整的单机部署流程: 核心架构包括前端界面、后端服务、PostgreSQL数据库和Runtime执行机器 推荐使用Docker Compose部署,需配置数据持久化目录 提供详细的docker-compose.yml和.env配置文件说明 重点注意事项:数据库密码和JWT密钥必须修改,生产环境配置必须设为production 需正确配置前端访问地址和WebSocket连接 部署完成后,用户可创建AI Agent并将其 阅读详情

相关推荐

OpenGL绘制简单场景,实现旋转缩放平移和灯光效果

本项目实现了用OpenGL绘制一个简单场景,包含正方体、球体和网格,实现了物体的旋转、缩放、平移和灯光效果。附有项目完整代码,有详细注释。适合初学者熟悉opengl使用。

张竞成的博客 1万+

sdut acm(补题)小P的故事——神奇的发票报销

Problem Description 为响应党的号召,小P所在的大学现在严格规范报销制度,禁止铺张浪费。特作如下规定:允许报销的发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600元。 现在老师决定把这报销发票的重任交付于小P,给他一沓发票,让他找出可以报销的、不超过给定额度的最大报销额。小P能成功完成组织

shadowam的博客 594

Synopsys AXI VIP 从环境搭建到首个验证场景运行

本文详细介绍了Synopsys AXI VIP从环境搭建到首个验证场景运行的全过程,包括VIP安装、示例工程生成、验证环境解析、仿真调试技巧及进阶优化。特别针对AXI协议验证中的常见问题提供了实用解决方案,帮助工程师快速掌握这一SoC验证必备工具。

weixin_29185493的博客 340

HDU 1864 最大报销额 背包DP

最大报销额 HDU - 1864 有三类可以报销的发票,要求每张发票的总额不超过 100010001000,每张发票上单项物品不得超过 600600600,求在给出的一堆发票中可以报销的最大报销额。 首先判断哪些发票是符合要求的,只处理符合要求的发票。然后令 dp[i]dp[i]dp[i] 表示包含第 iii 张发票能够得到的最大报销额,则对于 0≤j≤i−10\le j\le i-10≤j≤i−...

wineandchord 172

记一次Redis出问题及解决方案

Q1: redis服务关闭前确认数据还是在的,重启后发现一条数据都没了,key* 查也是空的 A1: 经仔细检查发现redis.conf配置文件配置的数据存储目录配置的是dir ./ 也就是相对目录,也就是说在哪个目录执行redis-server redis.config启动命令 redis数据就会存到哪个目录,同样就会加载哪个目录下的数据文件(dump.rdb),前后两次启动命令的位置不一样导致第二次启动没有加载到(dump.rdb)文件,从而导致查不出数据 Q2:springboot 集成r

u010013928的博客 3058

【ChangeCLIP】Remote sensing change detection with multimodal vision-language representation learning

ChangeCLIP论文及代码使用详解。持续更新变化检测最新论文,欢迎订阅本专栏。

向上生长的程序媛的博客 1333

HDU 1864 最大报销额 01背包

HDU 1864 最大报销额 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 17530    Accepted Submission(s): 5141 Problem Description 现有一笔经费可以报销

TaoSama's Microcosm 462

YOLOv11改进 | Conv/卷积篇 | 利用Hype-YOLO提出MANet增强YOLOv11特征提取能力

本文给大家带来的最新改进机制是由Hype-YOLO提出的MANet结构,其是一种C3、C2f、C3k2的升级版,用于增强特征提取能力。MANet可以理解为C2f的升级版,其整合了DSConv和C2f结构,这些模块的组合使得信息流动更加丰富,有助于在训练过程中提高梯度流动,从而增加基础特征的语义深度。官方发布的数据中HypeYOLO的精度是高于YOLOv11的,本文内容包含MAnet替换C3k2的教程以及原理介绍。欢迎大家订阅我的专栏一起学习YOLO,购买专栏读者联系读者入群获取进阶项目文件!

Snu77的博客 2159

最大报销额 HDU - 1864(DP+01背包)

最大报销额 HDU - 1864 点击跳转↑ 题设:多组输入,每组输入一对Q和N,分别代表当前的公费,和需要报销的账单总数。接下来N行,每行开始一个m,接下来是m项物品的名称和价格。求:在所有符合报销规则的账单中,任意组合,让总报销额不超过公费且最大。 思路:简单的背包,但是有坑,首先需要读懂题意,账单的报销规则为: 1-允许报销的发票类型包括买图书(A类)、文具(B类)、差旅(C类) ==>单张账单中,只能出现“A”,“B”,“C”三种类型的物品 2-每张发票的总额不得超过1000元 ==>

自伤无色的博客 544

YOLOv8【第十章:多任务扩展深度篇·第16节】车道线检测——基于 YOLOv8-Seg 的车道线分割与拟合!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 1万+

全网最全-QCC51xx-QCC30xx(TWS)系列从入门到精通开发教程汇总(持续更新中)

QCC3040开发笔记之基本介绍(0) QCC3040开发笔记之开发环境搭建(1) QCC3040开发笔记之debug调试(trb调试,usbt调试,adb调试,WIFI调试)(2) QCC3040开发笔记之按键配置(3) QCC3040开发笔记之按键切换(4) QCC3040开发笔记之按键逻辑(5) QCC3040开发笔记之tone(6) QCC3040开发笔记之提示音(7) QCC3040开发笔记之bitserial接口(8) QCC3040开发笔记之双mic+AEC+ANC(9...

心跳包的博客 3万+

hdu 1864 最大报销额

http://acm.hdu.edu.cn/showproblem.php?pid=1864hdu  1864  最大报销额            题目链接: DFS 题目分析:求有上限的数列最大和,用DFS来做就可以。对题目的理解应该大致有这么几点,发票整张报销,所以有一条不合格,整张就废了;1000是每张发票的总额上限,600是每一项(种类ABC)的上限,还有个总上限,是要输入的。根据三个

slicer的技术交流栈 944

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

[HDU]1864最大报销额[dp][贪心?怎么可能!]

题目链接:[HDU]1864最大报销额[dp]or[贪心] 题意分析:题意就不再分析了。需要注意的事,题目中有一句『单项物品的价值不得超过600元』等价于『单类物品总价值不超过600元』。刚开始还以为是单个物品Orz。 解题思路:这次最大报销额是一个浮点数,单纯的整数背包就不起作用了。可以考虑使用乘100后变为整数的方法,进行01背包求解。 (网上流传的两种方法:一种DP:转移方

闲停 646

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

hdu1864 最大报销额

hdu1864 最大报销额

李典金 320

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

HDU 1864 最大报销额 (01背包)

题目链接:HDU 1864 最大报销额 01背包。 把张数当成背包,状态转移方程:f[j]=max(f[j],f[j-1]+v[i]),f[j]表示把j张装进背包的最大报销额。 这题这么做还是有点问题,比如这组数据: 100.00 5 1 A:5 1 B:20 1 C:24 1 A:30 1 A:60 f[3]为114,f[2]为90,f[3]超过了100.00,那么就会输

fobdddf的专栏 607

HDU 1864 最大报销额(01背包)

HDU 1864 最大报销额(01背包) http://acm.hdu.edu.cn/showproblem.php?pid=1864 题意:        现有一笔经费可以报销一定额度的发票。允许报销的发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不

code 3257

HDU1864:最大报销额

经典01背包例题

innounce的博客 390

hdU 1864 最大报销额

最大报销额 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 11181    Accepted Submission(s): 3067 Problem Description 现有一笔经费可以报销一定额度的发票。允

dongdongzhang_的专栏 551

hdu1864 最大报销额 01背包

最大报销额Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 29672    Accepted Submission(s): 9092Problem Description现有一笔经费可以报销一定额度的发票。允许报销的发票类型包括买图书(A类...

popcjz的博客 1321

hdu 1864 最大报销额 0-1背包

/* hdu 1864 最大报销额 题意:每张发票总额不得超过1000,单项物品不得超过600(一项物品可能出现多次),除ABC类外,其他的不能报销(含多余项的发票整个儿不能报销) 所有价格扩大100倍,按发票经行背包 */ #include #include int dp[3000000]; int wu[100],wug; int zong; int find() { int n,i,a,b

1054

HDU 1864 最大报销额

传送门 01背包,有一点变形。 给一些发票(物品),每张发票都有一个报销额(价值),每张发票还有一个判断合不合法的过程(这题很坑,话都说不明白。它要求的是每张发票上的A,B,C每类都不大于600.0,而不是每一项),每张发票要么全报要么全不报。问你在总报销额不大于Q的情况下最大的总报销额是多少。 刚一看会发现一个问题,它没有一个显式的背包容量的概念。(当然,这道题可以把价值和重量当成一个东西,有人...

Crossing over 281

hdu1864 — 最大报销额

题目大意:给出n张发票,每张发票可报销的类型只有 A、B、C三类,若有其他不予报销,其中可报销的每张发票总额不超过1000,单项消费金额不超过600,给出报销额度,问可报销的最大总额 思路分析:该题花费即价值,在输入时进行筛选,不符合条件的发票不进行处理,符合条件的将该张发票的总金额计算出来,为方便处理,将所有涉及金额数目*100 方程为 f [ j ] = max ( f [ j ]

不许动我的松子的博客 452

hdu1864最大报销额

Description 现有一笔经费可以报销一定额度的发票。允许报销的发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不超过给定额度的最大报销额。 Input 测试输入包含若干测试用例。每个测试用例的第1行包含两个正数 Q 和 N,其中 Q 是给定的报销额度,...

陈常杰的博客 429

HDU-1864 最大报销额

现有一笔经费可以报销一定额度的发票。允许报销的发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不超过给定额度的最大报销额。 Input 测试输入包含若干测试用例。每个测试用例的第1行包含两个正数 Q 和 N,其中 Q 是给定的报销额度,N( m Ty

fff217的博客 624
上一篇: LeetCode134. Gas Station
下一篇: hdu 2546 饭卡
_IanXiao
博客等级 码龄12年 84粉丝 241原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值