社区讨论

求救 (违规紫衫

灌水区参与者 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 条回复,欢迎继续交流。

正在加载回复...