解题思路:
注意事项:
参考代码:
#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 人评分
C二级辅导-同因查找 (C语言代码)浏览:593 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:689 |
printf基础练习2 (有点不明白)浏览:888 |
C语言训练-求PI* (C语言代码)浏览:641 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:583 |
蓝桥杯历届试题-翻硬币 (C++代码)浏览:955 |
C二级辅导-同因查找 (C语言代码)浏览:618 |
C语言程序设计教程(第三版)课后习题10.7 (用指针求解)浏览:1542 |
筛排处理 (C语言代码)浏览:831 |
简单的a+b (C语言代码)浏览:617 |
班班最大了 2024-04-15 22:58:57 |
可以去看看我的题解,比这个全面