Skip to content

Commit

Permalink
job changes
Browse files Browse the repository at this point in the history
  • Loading branch information
aajjbb committed Oct 23, 2014
1 parent 5157cfa commit 6ae9bdf
Show file tree
Hide file tree
Showing 21 changed files with 764 additions and 1,319 deletions.
66 changes: 24 additions & 42 deletions A2/CupOfCowards.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,26 @@ typedef long long Int;
typedef unsigned uint;

const Int INF = 101010101010101010LL;

int T;
Int P;
Int H[6], D[6], C[6];
pair<Int, Int> dp[6][1010];
pair<Int, Int> glob;

void compare(pair<Int, Int>& a, pair<Int, Int> b) {
if (a.second >= P) {
if (b.second >= P) {
if (b.first < a.first || (b.first == a.first && b.second < a.second)) {
a = b;
}
} else {
if (b.first > a.first) {
a = b;
}
}
/* if (a.second >= P) {
if (b.second < P) return;

if (b.first < a.first || (b.first == a.first && b.second < a.second)) {
a = b;
}
Expand All @@ -37,23 +47,22 @@ void compare(pair<Int, Int>& a, pair<Int, Int> b) {
a = b;
}
}
*/
}

pair<Int, Int> func(int id, int hit, Int a, Int b) {
if (b >= P) {
if (a < glob.first || a == glob.first && b < glob.second) {
glob = make_pair(a, b);
}
}
pair<Int, Int> func(int id, int hit) {
if (id == 5) {
return make_pair(0, 0);
} else {
pair<Int, Int>& ans = dp[id][hit];

if (ans.first == -1LL) {
for (int i = 0; i <= H[id]; i++) {
pair<Int, Int> tmp = func(id + 1, i, a + i * C[id], b + i * D[id]);
pair<Int, Int> tmp = func(id + 1, i);

tmp.first += i * C[id];
tmp.second += i * D[id];

compare(ans, tmp);
}
}
Expand All @@ -63,47 +72,20 @@ pair<Int, Int> func(int id, int hit, Int a, Int b) {

int main(void) {
cin >> T;

for ( ; T--; ) {
cin >> P;

for (int i = 0; i < 5; i++) {
cin >> H[i] >> D[i] >> C[i];
}

for (int i = 0; i < 5; i++) {
// dp[i] = make_pair(-1, -1);
fill(dp[i], dp[i] + 1010, make_pair(-1LL, -1LL));
}
/*
for (int i = 0; i < 5; i++) {
for (int j = 0; j <= H[i]; j++) {
if (i == 0) {
dp[i][j] = make_pair(j * C[i], j * D[i]);
} else {
dp[i][j] = make_pair(-INF, -INF);
for (int k = 0; k <= H[i - 1]; k++) {
pair<Int, Int> bf = dp[i - 1][k];
bf.first += C[i] * j;
bf.second += D[i] * j;
if (bf.second > dp[i][j].second || (bf.second == dp[i][j].second && bf.first < dp[i][j].second)) {
dp[i][j] = bf;
}
}
}
}
}
pair<Int, Int> ans = make_pair(INF, INF);
for (int i = 0; i <= H[4]; i++) {
if (dp[4][i].second >= P) {
if (dp[4][i].first < ans.first || (dp[4][i].first == ans.first && dp[4][i].second < ans.second)) {
ans = dp[4][i];
}
}
}
*/
glob = make_pair(INF, INF);
pair<Int, Int> ans = func(0, 0, 0, 0);
ans = glob;
// cout << ans.first << " " << ans.second << "\n";

pair<Int, Int> ans = func(0, 0);

if (ans.second < INF && ans.second >= P) {
cout << ans.first << " " << ans.second << "\n";
} else {
Expand Down
Binary file modified A2/a.out
Binary file not shown.
Loading

0 comments on commit 6ae9bdf

Please sign in to comment.