您的位置:首页 > 其它

CodeForces 176A Trading Business 贪心

2017-03-21 21:33 441 查看
题目链接:这里

题意:有n个星球,然后每个星球有m个商品,买需要ai元,卖需要bi元,只有ci个。你需要在一个星球买最多k个商品,然后在一个星球卖出去。问你最多赚多少钱?

解法:暴力枚举在哪个星球买,在哪个星球卖,然后直接贪心的去选择k个商品就好了,选择差价最大的k个商品

//CF 176A

#include <bits/stdc++.h>
using namespace std;
int a[20][200];
int b[20][200];
int c[20][200];
int vis[200];
int n, m, k;
int cal(int x, int y){
memset(vis, 0, sizeof(vis));
int last = k, ans = 0;
while(last){
int flag = 0;
int maxv = 0, maxp = 0;
for(int i = 1; i <= m; i++){
if(vis[i]) continue;
if(b[y][i] - a[x][i] > maxv){
maxv = b[y][i] - a[x][i];
maxp = i;
flag = 1;
}
}
if(flag == 0) break;
int num = min(last, c[x][maxp]);
ans += num*maxv;
vis[maxp] = 1;
last -= num;
}
return ans;
}
int main(){
scanf("%d%d%d", &n, &m, &k);
for(int i = 1; i <= n; i++){
string s;
cin >> s;
for(int j = 1; j <= m; j++){
scanf("%d%d%d", &a[i][j], &b[i][j], &c[i][j]);
}
}
int ans = 0;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
ans = max(ans, cal(i, j));
}
}
printf("%d\n", ans);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: