题解 | #找硬币#

[AHOI2013]找硬币

https://ac.nowcoder.com/acm/problem/19895

*题目其实说的很模糊,我抄答案(看别人写的提交)的时候才发现有很多隐含条件,比方说最大硬币金额不能超过兔子的最大单只金额

dp[i]定义为硬币最大为i的时候所需的硬币数目

初始化dp[1]=1

import java.util.*;
public class Main{
    public static void main(String[] args){
      Scanner in=new Scanner(System.in);
        int count=in.nextInt();
        int sum=0;
        int max=0;
        int[] rabbit=new int[count];
        for(int i=0;i<count;i++){
            rabbit[i]=in.nextInt();
            sum+=rabbit[i];
            max=Math.max(rabbit[i],max);
        }
        System.out.println(new Main().getRes(sum,max,rabbit));
    }
    public int getRes(int sum,int max,int[] rabbit){
            int[] dp=new int[max+1];//最大面额为i需要的最少硬币数目
        dp[1]=sum;
        for(int i=2;i<=max;i++){
            dp[i]=Integer.MAX_VALUE;
        }
        for(int i=1;i<=max;i++){
            //次大面额为i
            for(int j=2;i*j<=max;j++){
                //最大面额为i*j
                int count=0;
                for(int k=0;k<rabbit.length;k++){
                    //每使用一个i*j,就少使用j个i,所以减少的硬币数就是(rabbit[k]/(i*j))*(j-1)
                    count+=(rabbit[k]/(i*j))*(j-1);
                }
                dp[i*j]=Math.min(dp[i*j],dp[i]-count);
            }
        }
        int min=Integer.MAX_VALUE;
        for(int i=1;i<=max;i++){
            min=Math.min(dp[i],min);
        }
        return min;
    }
}

存疑,为什么

for(int k=0;k<rabbit.length;k++){
                    //每使用一个i*j,就少使用j个i,所以减少的硬币数就是(rabbit[k]/(i*j))*(j-1)
                    count+=(rabbit[k]/(i*j))*(j-1);
                }

改成

count=(sum/(i*j))*(j-1);

结果就不对了,明明数学推导能推导成功

全部评论
我也有你的疑惑,但是在取整的条件下,二者的结果确实不同
点赞 回复 分享
发布于 2024-05-15 21:48 山东

相关推荐

11-22 16:20
已编辑
青岛黄海学院 Java
等闲_:感觉有好多地方会被问穿,mysql存储向量这个方案问题应该很大的,如果深问的的话,为什么不用es,不用pg,不用mivus,分块策略是怎么做的,向量化是怎么向量化的,稠密向量还是稀疏向量,再深问余弦相似度,HSWM算法,Bm25算法,为什么不用混合检索或者Rank重排序优化?其他的项目不停机分库分表咋实现的,切库过程中数据有diff的话有没有补偿策略?既然有了分库分表了有没有碰到业务上不好优化的慢sql,让这个sql读从库?而且点评的话,最好自己压测过,要不这个数据也不好解释。现在就27的情况来看,很多同学已经有了中大厂实习,这个节点也会偏向这些有大厂实习的92同学,而且hc也不多,所以坚持海投吧
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务