求大神教题

题目总版

ss_yangzirui @ 2024-11-05 17:34:07

问题 F: 2015NHOI小乙 第六题 小球(1.5) 内存限制:128 MB 时间限制:1.000 S 评测方式:文本比较 命题人:外部导入 提交:315 解决:159 题目描述 有 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


by SSqwq_ @ 2024-11-05 18:06:06

@ss_yangzirui 帮你做完了。

考虑枚举交换的小球数量即可,时间复杂度 O(n)

#include<bits/stdc++.h>
#define int long long
using namespace std;
int r,b,c,d,e;
void work(){
    cin>>r>>b>>c>>d>>e;
    if(r>b){
        swap(r,b);
        swap(c,d);
    }
    int ans=0;
    for(int i=0;i<=r;++i){
        ans=max(ans,e*(i+i)+c*(r-i)+d*(b-i));
    }
    cout<<ans<<"\n";
}
signed main(){
//  freopen(".in","r",stdin);
//  freopen(".out","w",stdout);
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int T=1;
//  cin>>T;
    while(T--){
        work();
    }
    return 0;
}

其实感觉可以 O(1)

求关注喵


by ss_yangzirui @ 2024-11-06 12:17:10

@SSqwq_ 谢谢,已关注


|