货币系统
其实这道题目如果加上证明有蓝的
观察样例的解释,我们可以猜测一个结论:最终的货币面值一定由最初的货币面值的子集构成,而且没有选择的货币面值是可以被选择的货币面值线性表示的(其实由线性代数的思想也可以比较容易地猜出这个结论,但是注意不要用线性方程组有解判定,即系数矩阵的秩等于增广矩阵的秩,因为这里要求向量的每个分量都是非负的,不能是随意的一个向量)
所以我们马上就得到了一个DP算法,在考场上实在证不出来直接写就好了:
1、将
2、最小的数必须要选,然后利用完全背包的思想,从
3、在判断后面的数字时,如果已经被标记过了,就不再选,没有被标记过就标记一下,再筛选一次数(即一次完全背包)
那么我们来详细证明一下这个结论
假设我们按照DP算法选出来的是数组
奠基:显然
归纳:假设
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构