求问 (违规紫衫
  • 板块灌水区
  • 楼主Liziya
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/9/23 22:35
  • 上次更新2024/9/24 13:51:03
查看原帖
求问 (违规紫衫
1292574
Liziya楼主2024/9/23 22:35

一道DALIOJ的题 但我知道我这神奇的代码为啥会错


题目 有 R 个红色盒子和 B 个蓝色盒子,还有 R 个红色小球和 B 个蓝色小球。每个盒子只能装一个小球,每个小球都要放在一个盒子里。如果把一个红色小球放在一个红色盒子里,那么得分是 C。如果把一个蓝色小球放在一个蓝色盒子里,那么得分是 D。如果把一个红色小球放在一个蓝色盒子里,那么得分是 E。如果把一个蓝色小球放在一个红色盒子里,那么得分也是 E。现在给出 R,B,C,D,E。应该如何放置这些小球进盒子,才能使得总得分最大?输出最大的总得分。


输入 一行,5 个整数,分别是 R,B,C,D,E。 输出


一个整数,最大总得分。


样例 输入 2 3 100 400 200 输出 1400


我的逆天代码

#include<bits/stdc++.h>
#define MIN 1e9
using namespace std;
int r,b,c,d,e,total,s=0,Min=MIN;
int main(){
    cin>>r>>b>>c>>d>>e;
    while(c>e&&d>e){
        Min=min(r,b);
        s=s+Min*e;
        r=r-Min;
        b=b-Min;
        s=s+r*c+b*d;
        break;
    }
    while(c>e){
        s=s+r*c;
        Min=min(r,b);
        s=s+Min*e;
        b=b-Min;
        s=s+b*d;
        break;
    }
    while(d>e){
        s=s+b*d;
        Min=min(r,b);
        s=s+Min*e;
        r=r-Min;
        s=s+r*c;
        break;
    }
    if(c<=e&&d<=e){
        total=r+b;
        s=s+total*e;
    }
    cout<<s<<endl;
    return 0;
}

链接

2024/9/23 22:35
加载中...