题解 P2705 【小球】

· · 题解

此题其实很简单,根本不用搜索

由于红球数等于红盒数,蓝球数等于蓝盒数,那么,放入红盒的蓝球数等于放入蓝盒的红球数

只需要把一个红球和一个蓝球算作一组,比较放入同色盒中和异色盒中每组的大小

如果同色盒中的大,就把所有的球放入同色盒中

如果异色盒中的大,就尽可能多地把球放入异色盒中,剩下的放入同色盒中

最后求出总分

附上代码

#include<cstdio>
using namespace std;
int main(){
    int r,b,c,d,e,sum,k;
    scanf("%d%d%d%d%d",&r,&b,&c,&d,&e);
    if(r>b) k=1;
    else k=0;//先判断一下蓝球和红球的数量
    if(c+d>e+e) sum=r*c+b*d;//如果同色盒中的大
    else{
        if(k==1)//如果红球多
            sum=b*2*e+(r-b)*c;
        else sum=r*2*e+(b-r)*d;//如果蓝球多
    }
    printf("%d",sum);
    return 0;
}