HDU5527 - Too Rich(贪心)

医学影像处理实战:如何用Python+SimpleITK搞定DICOM/NIfTI重采样(附完整代码) 本文详细介绍了如何使用Python和SimpleITK库实现医学影像(DICOM/NIfTI格式)的智能重采样技术。通过实战代码演示,帮助读者掌握医学图像处理中的关键步骤,包括环境搭建、数据准备、核心算法实现和质量验证,解决医学AI领域中的影像标准化难题。 阅读详情

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=5527


题目大意:

现在你有 P 元钱,有10种不同面值的硬币,每种硬币有一定的数量,求用尽量多的硬币凑出P元钱,有可能凑不出。


解题过程:

当初比赛没看这道题,最近才补,看起来挺简单的,实际知道思路上也不难……


题目分析:

要用尽量多的硬币凑 P 元钱,假设我现在硬币总共的面值和为M,那么换个思路,我现在要从总共的硬币中拿走尽量少的硬币,使剩下的硬币为P元。

那么问题转化成了,用尽量少的硬币去凑出 M−P 元,这个题目就有点熟悉了,不过这里有两个特殊的地方,一个是每种硬币都有数量限制,一个是面值大的硬币并不是面值小的硬币的整数倍。

假设没有数量限制,那么就是简单的贪心,尽量用面值大的硬币去凑出 M−P 元就好了。但是这个题用这个思路的话,会有这种情况。

假设现在有 20,20,20,50 这四个硬币,要去凑 60 元,如果以之前的思路贪心的话,那么是无解的,但是这里可以不用 50 元这个硬币,而用 3 个20元的去凑出 60 元。

那么对于这种情况,就要尝试一下,对于每种硬币,去掉一个这种硬币后的解。


AC代码:

#include <bits/stdc++.h>
using namespace std;

typedef long long LL;

const LL INF = 0x3f3f3f3f3f3f3f3f;

LL coin[] = {1, 5, 10, 20, 50, 100, 200, 500, 1000, 2000};
LL num[10], c[10];

LL ans = INF;

void dfs(int i, LL sum, LL t) {
    //sum == 0 表示找到了一个解
    if (sum == 0) {
        ans = min(ans, t);
        return;
    }
    //sum == -1 时需要返回,已经没有面值更小的硬币了
    if (i < 0)
        return;

    //计算出来当前硬币最多取多少
    c[i] = min(num[i], sum/coin[i]);
    dfs(i-1, sum - coin[i] * c[i], t + c[i]);

    //尝试少拿一个硬币
    if (c[i] > 0) {
        c[i]--;
        dfs(i-1, sum - coin[i] * c[i], t + c[i]);
    }
}

int main() {
    LL n;
    scanf("%lld", &n);
    while (n--) {
        LL p;
        LL total, sum;
        total = sum = 0;
        scanf("%lld", &p);
        for (int i = 0; i < 10; i++) {
            scanf("%lld", num + i);
            //sum计算所有硬币总共的价值
            sum += coin[i]*num[i];
            //total计算总共的硬币数
            total += num[i];
        }

        //计算出需要拿走多少钱
        sum -= p;

        if (sum < 0) {
            printf("-1\n");
            continue;
        }

        ans = INF;
        dfs(9, sum, 0);

        //如果ans == INF 表示一个解都没有
        if (ans == INF)
            printf("-1\n");
        else
            printf("%lld\n", total - ans);
    }
}
Oracle19c安装,基本配置教程(超详细) 安装有出错的风险,卸载也是比较麻烦的,所以先提前设置一个还原点,在windows中的步骤如下,如果对自己有信心,可以直接跳过该部分开始安装oracle在设置中进入创建还原点的界面开始创建还原点上面已经成功创建了还原点,如果安装oracle时出现问题,自己也无法解决,恢复到安装之前即可,恢复步骤如下经过上面的步骤,Oracle我们就能够正常使用了,我们就使用自己在sql plus里面创建的账号即可,创建的表会默认存放在我们自己创建的表空间里面。 阅读详情

相关推荐

【QT】基于QSerialPort的跨平台串口通信实战指南

本文是一份基于Qt QSerialPort模块的跨平台串口通信实战指南。详细介绍了从硬件基础、QSerialPort核心类使用、参数配置、设备自动发现到数据异步读写和错误处理的完整流程,并通过构建一个功能齐全的串口调试助手实例,帮助开发者快速掌握在Windows、Linux和macOS系统下进行高效、稳定的串口应用开发。

a1b2c3d的博客 981

HDU中的贪心算法

/j代表价值,f代表重量。

m0_72345017的博客 299

Python爬虫实战(基础篇)—23—爬取微信小程序<随机目的地旅行>生成随机地址(附GUI版)

爬取微信小程序<随机目的地旅行>生成随机地址

weixin_42636075的博客 1228

hdu 贪心(hdu 2037,hdu 1051,hdu 1050)

hdu 2037 今年暑假不AC (http://acm.hdu.edu.cn/showproblem.php?pid=2037) 比较经典的贪心问题之一,以结束时间排序,如果下一个时间的开始时间大于等于上一个事件结束时间,那么结果就加一。 View Code 1 #include<iostream> 2 #include<cstring> 3 ...

weixin_30530939的博客 262

通达信大单资金实时监控与播报插件:股票分析的实用利器——大红球

本文介绍了一款专为通达信软件设计的大单资金实时监控与播报插件,该插件以其傻瓜式操作和入门级特性在股民中广受欢迎。插件核心功能包括与通达信版面的无缝联动、大单金额范围的自定义设置、资金流动的可视化展示以及智能声音播报等。其技术架构基于本地网页形式,自带分时图显示功能,数据实时更新且无需L2账户,承诺永久免费升级。插件通过红绿球的大小和颜色直观展示资金规模与买卖方向,顶端全局统计功能提供宏观资金流动分析。尽管插件数据具有较高参考价值,但投资者仍需结合其他因素进行综合判断。插件界面可自适应调整,提供个性化使用体验

guleba的博客 6589

【OS】AUTOSAR架构下MCAL Modules软件分区问题分析

AUTOSAR架构下MCAL Modules软件分区问题分析

qq_36056498的博客 939

HDU1050——Moving Tables(贪心)

The floor has 200 rooms each on the north side and south side along the corridor. Recently the Company made a plan to reform its system. The reform includes moving a lot of tables between rooms. Because the corridor is narrow and all the tables are big, on

WAR___NING的专栏 793

大数据与宠物:健康监测数据分析

随着全球宠物市场规模的快速增长(2023年全球宠物产业规模已达3500亿美元),宠物健康管理需求呈现指数级上升。传统宠物医疗依赖定期体检和症状观察,存在滞后性和主观性缺陷。本文聚焦如何通过物联网(IoT)设备采集宠物生理数据(体温、心率、活动量等),利用大数据分析技术构建实时健康监测系统,实现宠物健康状态的动态评估、异常预警和疾病预测。研究范围涵盖数据采集技术、数据预处理方法、机器学习模型构建及实际应用场景落地。背景介绍:明确研究目的、目标读者及核心术语核心概念与联系。

2502_91592937的博客 1067

hdu 1045 贪心求解

Hdu1045 题目大意: 有一个n行n列的地图,其中 '.' 代表空地,可以建造炮台,'x' 代表墙,建造规则是:每两个炮台之间必须有一堵墙,否者这两个炮台就会互相摧毁。现在输入一张这样的地图,要你计算最多可以建造多少炮台? 解题思路: 根据地图,得到一张新的数字地图,这张数字地图的构建方法是: 大小和原地图一样, 计算原地图的每一个 ' . ' 所在行列中有多少个 ‘ . ’,并将...

wangmengfuu的博客 1009

【Flink】FlinkSQL如何触发执行计算

Table (通过 StatementSet.addInsert() 输出给某个 Sink)和 INSERT 语句 (通过调用 StatementSet.addInsertSql())会先被缓存到 StatementSet 中,StatementSet.execute() 方法被调用时,所有的 sink 会被优化成一张有向无环图。该方法是用来将一个表的内容插入到目标表中,一旦该方法被调用, TABLE API 程序立即被翻译。该方法是用来执行一个 SQL 语句,一旦该方法被调用, SQL 语句立即被翻译。

一杯咖啡半杯糖的博客 1006

SpringBoot实现快速导入EXCEL

MaterialMonitorController.java @Log(title = "物料监测", businessType = BusinessType.IMPORT) @RequiresPermissions("system:materialMonitor:import") @PostMapping("/importData") @ResponseBody ...

LEN程序员的一生 4817

hdu5527 Too Rich(贪心)

hdu5527题目你有一些面额的钱,要凑出p元而且钱数要尽量多。思路短小精悍的一道题,不过我还是绕啊绕的,先说我看别人的思路,就是反过来凑sum-p的最小数目,然后就是用贪心,但是并不是所有的小钱是它之前一项的约数,直接贪心并不正确,会有奇偶的分类,那我们就用搜索,同时记录用最多和少用一个即可,注意少用一个的前提是至少可以用一个。 感觉首先就是想不到反过来,还有就是是不是约数的影响,学习了orz代

天道酬勤 968

Open3D——RANSAC 三维点云空间直线拟合【2025最新版】

使用RANSAC算法在点云数据中拟合三维空间直线的python代码实现。博客长期更新,本文最新更新时间为:2025年3月23日。

点云侠的博客 7354

HDU5527:Too Rich(DFS & 贪心 & 思维)

不是很理解,留个坑吧!

PengWei Yang 148

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Too Rich HDU - 5527 (思维题+贪心)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5527 Too Rich Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 1253    Accepted Submissi

Vision 668

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

hdu 5527 Too Rich(贪心)

题目链接:hdu 5527 Too Rich解题思路从大的面值开始考虑,放的个数保证剩下的面值能用比当前面值小的硬币组成。这里只有50,500的情况比较特殊,因为有20和200可能要考虑多放一个的情况。代码#include <cstdio> #include <cstring> #include <algorithm>using namespace std; const int V[] = {0,

不慌不忙、不急不躁 1298

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

HDU 5527(Too Rich-贪心)

给面额c1,c5,c10,c20,c50,c100,c200,c500,c1000,c2000硬币若干,让你用最多的钱币凑出恰好p元,可能无解这道题是2015长春区域赛的金牌题。。场外头脑风暴一个晚上+一个中午,推翻大量算法的路过一般的贪心法是尽可能多取小面额硬币,但是这样可能会被p=70 (20,20,20,50) 卡掉,因为贪心取20结果答案变成无解原因是20凑不出50.所以我们考虑50取奇数

nike0good |Oier&ACMer | 熟能生巧 1049

HDU 5527 Too Rich 贪心

题意: 有\(10\)种面值为\(1, 5, 10, 20, 50, 100, 200, 500, 1000, 2000\)的纸币,现在你要选最多的数量凑成\(p\)块钱。 分析: 同样分析问题的反面:设总金额为\(sum\),我们来求凑成\(sum-p\)所需要的最少的张数。那么剩下的就是凑成\(p\)的最多的张数。 如果没有\(50\)和\(500\)的面值的话,那么后一种面值都是前一种面值的...

weixin_30532973的博客 55

HDU 5527 Too Rich (好题 贪心 DFS)

HDU 5527 Too Rich (贪心 DFS)

Tc的专栏 2499

HDU 5527 Too Rich (贪心+DFS)

题意: 有1,5,10,20,50,100,200,500,1000,2000十种面值的钱币各ci个,现在要凑出p元,问最多可以用多少钱币凑出 思路: 取最多的钱币,就是要多取面额小的钱币。 从小贪心到大面额,存在一个问题: 例如: 110 19个1 2个20 2个50这组数据 我们无法正确的从1开始贪心,以保证贪心的结果是正确的。 那么,我们可以转化一下思路多取面额小的钱币即

DT2131 404

HDU 5527 Too Rich(dfs贪心)

你有10种面值的货币,每个有ci个,然后让你正好凑p元,并且货币个数最多你有10种面值的货币,每个有c_i个,然后让你正好凑p元,并且货币个数最多 以前做过类似的贪心就是取最少的大的,然后用小的去凑大的以前做过类似的贪心就是取最少的大的,然后用小的去凑大的 但是这题不一样,因为50和20不整除,200和500也是但是这题不一样,因为50和20不整除,200和500也是 怎么办呢。考虑到100被

Miracle_ma的专栏 630

hdu5527 Too Rich

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5527 题目大致意思是你现在有一堆硬币,有10种不同币值的钱a[i]个,先要凑出p元,要使得使用的钱币最多。 这是一题贪心题,要使得所用钱币最少更容易进行处理,所以先算出总钱数sum,将问题转化成要得到sum-p元所需的最少钱币。如果题目中没有50和500元硬币就直接从大到小贪心一遍就行了,现在有了

ddmike2015的博客 813

HDU-5527 Too Rich (逆向思维+贪心,两种做法)

题目链接:https://vjudge.net/problem/HDU-5527 Too Rich You are a rich person, and you think your wallet is too heavy and full now. So you wa...

weixin_44757834的博客 315

HDU - 5527 Too Rich 贪心

You are a rich person, and you think your wallet is too heavy and full now. So you want to give me some money by buying a lovely pusheen sticker which costs p dollars from me. To make your wallet ligh...

zstu_zy的博客 271

【hdu 5527】 [2015ACM/ICPC亚洲区长春站] Too Rich 贪心

Too Rich Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 673 Accepted Submission(s): 173Problem Description You are a rich person, and y

ATOD 1574
上一篇: CodeChef MOU2H - Mountain Holidays 2 (DP)
下一篇: ZOJ3385 - Hanami Party (贪心)
ACM_Fish
博客等级 码龄10年 69粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值