牛客挑战赛45 A-除2

除2!

https://ac.nowcoder.com/acm/contest/8563/A

除2!

分析

贪心思路:每次选一个偶数出来,如何才能使总和的减少量最大?明显,取出最大的那一个偶数,除二,直到所有的数不能被2整除或是k=0

代码

/*
(写点什么吧...)
*/
#include<bits/stdc++.h>

#define R register
#define ll long long
#define inf INT_MAX

using namespace std;

const int N=1e5+10;

int n,k;ll ans;

priority_queue<ll>q;

int main()
{
    scanf("%d%d",&n,&k);
    for (int i=1;i<=n;i++)
    {
        ll x;scanf("%lld",&x);
        if(x%2) ans+=x;
        else q.push(x);
    }

    while(k)
    {
        if(!q.size()) break;
        ll u=q.top();q.pop();
        if(u%2) ans+=u;
        else u/=2,q.push(u),k--;
    }

    while(q.size()) ans+=q.top(),q.pop();

    printf("%lld\n",ans);

    return 0;
}
比赛题解 文章被收录于专栏

牛客IOI周赛,团队赛,练习赛,挑战赛,各种模拟赛的部分题解

全部评论
总和的减少量最大把qwq
点赞 回复 分享
发布于 2020-11-14 07:50

相关推荐

11-15 19:28
已编辑
蚌埠坦克学院 硬件开发
点赞 评论 收藏
分享
牛客101244697号:这个衣服和发型不去投偶像练习生?
点赞 评论 收藏
分享
6 收藏 评论
分享
牛客网
牛客企业服务