4110.圣诞老人的礼物

  • 这道题其实不难 难就难在有一些知识点没学 所以就花了很多时间来思考 怎么存放数据
  • 一开始我是用了一个二维数组 后面就改成了Arraylist 然后进行排序
  • 这道题并不是整箱整箱的拿 ,可以拿箱子的一部分 所以先将性价比高的拿出来
import java.util.*;
//定义一个礼物类 存放 礼物的value kg and v_k
class gift {
    int val;
    int kg;
    double v_k ;
}
//定义一个方法
    public void MAX() {
//double 统计总数量
        double count = 0;
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int theMax = sc.nextInt();
  //定义一个ArrayList 存放对象 因为一开始 我尝试用一个一维数组存放数据 结果发现 v_k得分开存放
        List ls = new ArrayList();
        int i = 0;
        while (i < num) {
            gift g = new gift();
            g.val = sc.nextInt();
            g.kg = sc.nextInt();
            //不能再类里面运算 ,不然会没有数据
            g.v_k = (double) g.val / g.kg;
            ls.add(g);
            i++;
        }
//这道题主要的核心我觉得是下面这个 之前没学 ,不知道java内置的ArrayList 排序方法
        ls.sort(new Comparator() {
            @Override
            public int compare(gift o1, gift o2) {
                if ((o1.v_k - o2.v_k)  0)
                    return 0;
                else if ((o1.v_k - o2.v_k) > 1e-6)
                    return -1;
                else
                    return 1;
            }
//调整1/-1 的值就可以让Arraylist 升序排序还是降序
        });
        //for each 遍历 查看是否为从大到小
//      for(gift e : ls) {
//          System.out.println(e.v_k);
//      }
        for(int temp = 0;temp < ls.size();temp++ ) {
            gift g = ls.get(temp);
            if(g.kg <= theMax) {
                count += g.val;
            }
            else if(g.kg > theMax ) {
                count += theMax * g.v_k; 
                break;
            }
            theMax -= g.kg;
        }
          System.out.printf("%.1f", count);
    }
    public static void main(String[] args) {
        Main m = new Main();
        m.MAX();
    }
}
全部评论

相关推荐

群星之怒:1.照片可以换更好一点的,可以适量P图,带一些发型,遮住额头,最好穿的正式一点,可以适当P图。2.内容太少。建议添加的:求职意向(随着投递岗位动态更改);项目经历(内容太少了建议添加一些说明,技术栈:用到了什么技术,还有你是怎么实现的,比如如何确保数据传输稳定的,角色注册用到了什么技术等等。)项目经历是大头,没有实习是硬伤,如果项目经理不突出的话基本很难过简历筛。3.有些内容不必要,比如自我评价,校内实践。如果实践和工作无关千万别写,不如多丰富丰富项目。4.排版建议:建议排版是先基础信息,然后教育背景(要突出和工作相关的课程),然后专业技能(一定要简短,不要长篇大论,写你会什么,会的程度就可以),然后是项目经历(一定要详细,占整个简历一定要超过一半,甚至超过百分之70都可以)。最后如果有一部分空白的话可以填补上校内获得的专业相关的奖项,没有就写点校园经历和自我评价。5.技术一定要够硬,禁得住拷打。还有作息尽量保证正常,不要太焦虑。我24双非本科还是非科班,秋招春招各找了一段实习结果都没有转正,当时都想噶了,最后6月份在校的尾巴也找到一份工作干到现在,找工作有时很看运气的不要急着自我否定。 加油
点赞 评论 收藏
分享
飞花断音:这个头像有点搞笑
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务