牛客挑战赛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>

全部评论

相关推荐

07-02 13:52
门头沟学院 Java
点赞 评论 收藏
分享
八股刚起步,看了javaguide,小林coding,还有面渣,感觉面渣是体验最好的,请问只看面渣够用吗,有不完善的需要补吗?
码农索隆:先背最基础的知识,然后理解情景题,现在面试大多数喜欢问情景题,更考验面试者的基础和临场发挥情况
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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