社区讨论
求救 (违规紫衫
灌水区参与者 4已保存回复 19
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 18 条
- 当前快照
- 1 份
- 快照标识符
- @m1giegq6
- 此快照首次捕获于
- 2024/09/24 22:05 去年
- 此快照最后确认于
- 2025/11/05 00:09 4 个月前
这题已经卡2天了就差这题就能拿第一辣QAQ
题目链接 这题错一半
题目
题目描述
有 R 个红色盒子和 B 个蓝色盒子,还有 R 个红色小球和 B 个蓝色小球。每个盒子只能装一个小球,每个小球都要放在一个盒子里。如果把一个红色小球放在一个红色盒子里,那么得分是 C。如果把一个蓝色小球放在一个蓝色盒子里,那么得分是 D。如果把一个红色小球放在一个蓝色盒子里,那么得分是 E。如果把一个蓝色小球放在一个红色盒子里,那么得分也是 E。现在给出 R,B,C,D,E。应该如何放置这些小球进盒子,才能使得总得分最大?输出最大的总得分。
输入
一行,5 个整数,分别是 R,B,C,D,E。
输出
一个整数,最大总得分。
提示
【数据规模】
1 ≤ R ≤ 100,1 ≤ B ≤ 100, -1000 ≤ C,D,E ≤ 1000。
内存限制:128 MB
时间限制:1.000 S
C
#include<bits/stdc++.h>
using namespace std;
int main(){
int x,y,a,b,c,ans,sum,k1,k2,f=0;
cin>>x>>y>>a>>b>>c;
ans=x*a+y*b;
sum=(x+y)*c;
if(a+b>=2*c){
cout<<ans<<endl;
}
else{
int remX=x,remY=y;
while(remX>0&&remY>0){
remX--;
remY--;
}
if(remX>0){
k1=max(remX*a,remX*c);
f=f+k1;
}
if(remY>0){
k2=max(remY*b,remY*c);
f=f+k2;
}
cout<<max(ans,sum+f)<<endl;
}
return 0;
}
回复
共 19 条回复,欢迎继续交流。
正在加载回复...