目录
时间限制: 1000ms
空间限制: 262144kB
原题描述:
时间:1s 空间:256M
题目描述:
小信想吃到个巧克力味的甜筒和
个草莓味的甜筒,不能多吃。
冰柜里,有个巧克力味甜筒,饱食值分别为
,有
个草莓味甜筒,饱食值分别为
,有
个原味甜筒,饱食值分别为
。小信可以在原味甜筒上加调味料使其变成巧克力味或草莓味。
他想知道在不多吃的情况下能获得的最大饱食值。
输入格式:
第一行,包含五个正整数 ,表示小信想吃的甜筒数和冰柜内的不同口味甜筒数。
第二行,包含个整数
,表示巧克力味甜筒饱食值。
第三行,包含个整数
,表示草莓味甜筒饱食值。
第四行,包含个整数
,表示原味甜筒饱食值。
输出格式:
输出一个整数,小信能获得的最大饱食值。
样例1输入:
1 2 2 2 1
2 5
3 1
4
样例1输出:
12
主要思路:
这题是个贪心题,设吃了x个巧克力冰淇凌,y个草莓味冰淇凌,z个原味冰淇凌。
则x+y+z要<=n+m
还有个要注意的点,就是只有前n大,前m大的冰淇凌才可以进入评定。
最后就拍个序了。
ACCODE:
#include<bits/stdc++.h>
#define int long long
using namespace std;
vector<int> v;
int a[100010],b[100010],c[100010];
bool cmp(int x,int y)
{
return x>y;
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int n,m,x,y,z;
cin>>n>>m>>x>>y>>z;
for(int i=1;i<=x;i++)
{
cin>>a[i];
// v.push_back(tmp);
}
for(int i=1;i<=y;i++)
{
cin>>b[i];
}
for(int i=1;i<=z;i++)
{
cin>>c[i];
v.push_back(c[i]);
}
sort(a+1,a+1+x,cmp);
for(int i=1;i<=n;i++)//进入评选
{
v.push_back(a[i]);
}
sort(b+1,b+1+y,cmp);
for(int i=1;i<=m;i++)//进入评选
{
v.push_back(b[i]);
}
sort(v.begin(),v.end(),cmp);
int ans=0;
for(int i=0;i<n+m;i++)//遍历一遍
{
ans+=v[i];
}
cout<<ans;
return 0;
}