牛客挑战赛45A题

除2!

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

//萌新的第一篇题解
//只能想到大佬们眼中的弱鸡暴力算法
//利用优先队列排序进行贪心模拟
//既然奇数是无法进行操作的自然就想到让当前偶数列最大值尽量的小
#include<iostream>
#include<queue>
using namespace std;
#define IO ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define ll long long
priority_queue<ll>q;
ll ans = 0, n, k, value;
int main()
{
IO;
cin >> n >> k;
for (int i = 1; i <= n; i++)
{
cin >> value;
if (value & 1)//是奇数我们就不用压入,直接记录答案即可
ans += value;
else//偶数压入队列进行模拟
q.push(value);
}
while (k--)//进行了k次当前最大偶数/2操作退出循环
{
if (q.size() == 0)//没有偶数直接退出循环
break;
ll x = q.top();
q.pop();
x /= 2;
if (x & 1)//奇数记录答案
ans += x;
else
q.push(x);偶数再次压入队列模拟
}
while (!q.empty())//统计答案
{
ans += q.top();
q.pop();
}
cout << ans << endl;
return 0;
}</ll></queue></iostream>

全部评论

相关推荐

点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务