some programs!!!
This commit is contained in:
1 parent
71f1022dea
commit
ca6daa582c
43 files changed
+1452
-381
No files matched your search
@@ -0,0 +1,52 @@
|
||||
#include <iostream>
|
||||
|
||||
constexpr size_t MAX_HEIGHT = 4e4 + 1, MAX_EGGS = 30, INF = 0x3f3f3f3f;
|
||||
int eggs_amount, height;
|
||||
|
||||
int dp[MAX_HEIGHT][MAX_EGGS];
|
||||
bool ping_pong;
|
||||
|
||||
void print_dp(std::ostream& os = std::clog, int h = MAX_HEIGHT - 1) {
|
||||
for (int i = 0; i <= h; i++) {
|
||||
for (int j = 0; j < MAX_EGGS; j++) {
|
||||
os << dp[i][j] << " ";
|
||||
}
|
||||
os << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void init_dp() {
|
||||
for (int i = 0; i < MAX_HEIGHT; i++) {
|
||||
dp[i][1] = i;
|
||||
}
|
||||
for (int h = 1; h < MAX_HEIGHT; h++) {
|
||||
for (int eggs = 2; eggs < MAX_EGGS; eggs++) {
|
||||
int min_value = +INF;
|
||||
for (int i = 1; i <= h; i++) {
|
||||
min_value = std::min(
|
||||
min_value, std::max(dp[i - 1][eggs - 1], dp[h - i][eggs]));
|
||||
}
|
||||
dp[h][eggs] = min_value + 1;
|
||||
if (eggs >= dp[h][eggs]) {
|
||||
for (int i = eggs; i < MAX_EGGS; i++) { dp[h][i] = dp[h][eggs]; }
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
print_dp(std::clog, 100);
|
||||
}
|
||||
|
||||
int main() {
|
||||
std::ios::sync_with_stdio(false);
|
||||
std::cin.tie(nullptr);
|
||||
|
||||
init_dp();
|
||||
while (std::cin >> height >> eggs_amount && height) {
|
||||
// if (height >= MAX_HEIGHT || eggs_amount >= MAX_EGGS) {
|
||||
// throw std::overflow_error("Oh no!");
|
||||
// }
|
||||
// if (eggs_amount >= MAX_EGGS) { eggs_amount = MAX_EGGS - 1; }
|
||||
std::cout << dp[height][eggs_amount] << std::endl;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Reference in new issue
Block a user