Codeforces 526C - Om Nom and Candies (贪心 + 思维)
2015-04-05 20:42
691 查看
题意
给出总共能承受的重量,每千克两种糖的快乐值和每包糖的重量,问能达到的最大快乐值。思路
首先我们假设这两包糖的快乐值、重量分别为ha, hb, wa, wb。先判断max(wa,wb)是否大于c√。
如果是的话,假设那个值是wb,那么显然我们可以枚举b糖的包数来维护最大值。
因为b糖最多只能为wb包,所以这样的复杂度为O(C−−√)
如果不是,考虑每千克的重量。
设hawa<hbwb,即ha∗wb<hb∗wa
如果我们能买到wb千克的a,说明我们也能买到wa千克的b!
再根据上面那个得出来的那个不等式,当我们能买到wb千克的a时,买wa千克的b更加划算。。。
所以我们可以枚举a的数量,上限为wb。。所以复杂度也是O(C−−√)
感觉这里有点像脑筋急转弯啊。。我会说我盯着题解还想了一下午+半晚上吗_(:3」∠)_
说不定是这两天在看「Dog Days」的缘故。智商暂时性下降233333。
代码
#include <stack> #include <cstdio> #include <list> #include <cassert> #include <set> #include <iostream> #include <string> #include <vector> #include <queue> #include <functional> #include <cstring> #include <algorithm> #include <cctype> #include <string> #include <map> #include <cmath> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/hash_policy.hpp> using namespace std; #define LL long long #define ULL unsigned long long #define SZ(x) (int)x.size() #define Lowbit(x) ((x) & (-x)) #define MP(a, b) make_pair(a, b) #define MS(arr, num) memset(arr, num, sizeof(arr)) #define PB push_back #define X first #define Y second #define ROP freopen("input.txt", "r", stdin); #define MID(a, b) (a + ((b - a) >> 1)) #define LC rt << 1, l, mid #define RC rt << 1|1, mid + 1, r #define LRT rt << 1 #define RRT rt << 1|1 const double PI = acos(-1.0); const int INF = 0x3f3f3f3f; const double eps = 1e-8; const int MAXN = 5e4+10; const int MOD = 9901; const int dir[][2] = { {-1, 0}, {1, 0}, {0, -1}, {0, 1} }; int cases = 0; typedef pair<int, int> pii; int main() { LL c, ha, hb, wa, wb; LL ans = 0; cin >> c >> ha >> hb >> wa >> wb; if (wa > wb) swap(wa, wb), swap(ha, hb); if (wb > sqrt(c)) { for (int i = 0; i <= c/wb; i++) //枚举b的数目 ans = max(ans, i*hb + (c-i*wb)/wa*ha); } else { if (ha*1./wa > (hb*1./wb)) swap(wa, wb), swap(ha, hb); for (int i = 0; i <= wb; i++) ans = max(ans, i*ha + (c-i*wa)/wb*hb); //枚举a的数目 } cout << ans << endl; return 0; }
相关文章推荐
- Codeforces 526C - Om Nom and Candies(贪心)
- Codeforces 526C - Om Nom and Candies(贪心,暴力)
- Codeforces 526C - Om Nom and Candies
- 526C - Om Nom and Candies
- Codeforces 526D Om Nom and Necklace 循环节 kmp
- ZeptoLab Code Rush 2015 C. Om Nom and Candies 暴力
- ZeptoLab Code Rush 2015---C. Om Nom and Candies
- codeforces 526 c Om Nom and Candies 剩余系
- codeforces 526 d Om Nom and Necklace next数组的灵活运用
- CodeForces 721D. Maxim and Array(贪心,思维题)
- Codeforces 526C Om Nom and Candies
- 判断s各个前缀是否是 ABABA…ABA的形式 KMP Codeforces 526D - Om Nom and Necklace
- codeforces-508C-Anya and Ghosts【贪心】【思维】
- C. Om Nom and Candies(ZeptoLab Code Rush 2015)
- 【Henu ACM Round#19 E】 Om Nom and Candies
- ZeptoLab Code Rush 2015 C. Om Nom and Candies
- Codeforces 526D Om Nom and Necklace kmp+hash
- ZeptoLab Code Rush 2015 C题Om Nom and Candies
- CodeForces 588C - Duff and Weight Lifting(思维)
- Codeforces 301D Yaroslav and Divisors 【树状数组 + 思维】