1400B - RPG Protagonist
题目链接
题意:有两个大小为 p 和 f 的袋子, 有 cnts 个 重量为 s 物品, 和 cntw 个 重量为 w 的物品,问最多能拿多少个物品。
暴力枚举 + 贪心(优先拿小的)
#include<bits/stdc++.h>
using namespace std;
int p, f;
int s, w;
int cnts, cntw;
int solve(int x) {
int res = x;
int pp = p - x * s, ff = f;
int ress = cnts - x, resw = cntw;
if(pp / w >= resw) {
res += resw;
resw = 0;
}
else if(pp / w > 0) {
res += pp / w;
resw -= pp / w;
}
if(ff / s >= ress) {
ff -= s * ress;
res += ress;
}
else if(ff / s > 0) {
res += ff / s;
ff -= ff / s * s;
}
if(ff / w >= resw)
res += resw;
else if(ff / w > 0)
res += ff / w;
return res;
}
int main() {
int T;
scanf("%d", &T);
while(T -- ) {
scanf("%d%d", &p, &f);
scanf("%d%d", &cnts, &cntw);
scanf("%d%d", &s, &w);
if(s > w) swap(s, w), swap(cnts, cntw);
int ans = 0;
for(int i = 0; i*s <= p && i <= cnts; i++) {
ans = max(ans, solve(i));
}
printf("%d\n", ans);
}
return 0;
}