前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >牛客->除2!

牛客->除2!

作者头像
用户11305962
发布2024-10-09 15:58:45
830
发布2024-10-09 15:58:45
举报
文章被收录于专栏:学习

1.题目:

2.解析:

解法:

步骤一:创建大根堆,把筛选出偶数数据,然后全部放入大根堆;

步骤二:拿出堆顶元素,从sum中减掉, 减小的值,最后返回sum.

代码:

代码语言:javascript
复制
 public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(),k = in.nextInt();
        
        //创建大根堆
        PriorityQueue<Integer> heap = new PriorityQueue<>((a,b) -> {
            return b-a;
        });
        
        //把偶数丢进大根堆,获取偶数大根堆的和
        long sum = 0,num;
        for(int i = 0; i < n; i++){
            
             num = in.nextLong();
             sum += num;
            
            if(num % 2 == 0) {
                heap.offer((int)num);
            }
        }
        
        
        //拿出堆顶元素,除2,从sum中减掉减小的值
        while(!heap.isEmpty() && k-- != 0){
            
            long t = heap.poll() / 2;
            sum -= t;
            
            if(t % 2 == 0) heap.offer((int)t);
        }
        System.out.print(sum);
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档