aaa木


私信TA

用户名:dotcpp0594708

访问量:838

签 名:

等  级
排  名 47091
经  验 314
参赛次数 2
文章发表 1
年  龄 0
在职情况 学生
学  校 湖北汽车工业学院
专  业

  自我简介:

TA的其他文章

贪心+优先队列
浏览:812

解题思路:

注意事项:

参考代码:

#include<iostream>

#include<queue>

#include<math.h>

using namespace std;

priority_queue<int,vector<int>,less<int> >qe;

int main()

{

    int n,p,q;

    cin>>n>>p>>q;

    int a;

    for(int i=0;i<n;i++)

    {

    cin>>a;

    qe.push(a);

}

long long sum=0;

while(p>0||q>0)

{

a=qe.top();

qe.pop();

if(q==0)

{

a=sqrt(a);

p--;

qe.push(a);

}else if(p==0)

{

a/=2;

q--;

qe.push(a);

}else{

if(fabs(a-a/2)<fabs(a-sqrt(a)))

{

a=sqrt(a);

p--;

qe.push(a);

}else if(fabs(a-a/2)>=fabs(a-sqrt(a)))

{

a/=2;

q--;

qe.push(a);

}

}

}

int n1=qe.size();

for(int i=0;i<n1;i++)

{

a=qe.top();

sum+=a;

qe.pop();

}

cout<<sum;

    return 0;

}


 

0.0分

6 人评分

新上线《蓝桥杯辅导》课程,近五年的蓝桥杯省赛与国赛真题都有,从读题开始理解题意、梳理思路、实现代码再提交评测全过程,可有效提升获奖比例甚至进国赛!课程介绍、试听请猛击这里

  评论区

2 1 1
48 49
答案应该是30啊。。。
2024-04-15 08:53:38
  • «
  • 1
  • »