hdu4091(暴力)
生活随笔
收集整理的這篇文章主要介紹了
hdu4091(暴力)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
給出一個容量是n的背包,n<(2^32),給出藍寶石和綠寶石的體積和價值,每種寶石都是無限多的,求能得到的最大價值。
思路:
暴力,確定了一種寶石拿的數量,就能確定另一種寶石能拿的最大數量。
代碼:
#include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> using namespace std;const int maxcal = 1000000;int main() {int t;scanf("%d", &t);int kase = 1;while (t--) {long long n, s1, v1, s2, v2;scanf("%lld%lld%lld%lld%lld", &n, &s1, &v1, &s2, &v2);long long ans = 0;if (n / s1 < maxcal) {int num = n / s1;for (int i = 0; i <= num; i++) {int n2 = (n - i * s1) / s2;long long temp = i * v1 + n2 * v2;if (temp > ans) {ans = temp;}}}else if (n / s2 < maxcal) {int num = n / s2;for (int i = 0; i <= num; i++) {int n1 = (n - i * s2) / s1;long long temp = i * v2 + n1 * v1;if (temp > ans)ans = temp;}}else {if (s2 * v1 > s1 * v2) {for (int i = 0; i < s1; i++) {int n1 = (n - i * s2) / s1;long long temp = n1 * v1 + i * v2;if (temp > ans)ans = temp;}}else {for (int i = 0; i < s2; i++) {int n2 = (n - i * s1) / s2;long long temp = i * v1 + n2 * v2;if (temp > ans)ans = temp;}}}printf("Case #%d: %lld\n",kase++, ans);}return 0; }總結
以上是生活随笔為你收集整理的hdu4091(暴力)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: uvalive4744(数论)
- 下一篇: hdu4096(模拟)