【题目链接】
注意“要求每个人必须获得相同面积的蛋糕”,且n <= 10。
对于一块蛋糕,切割点必须是均匀分布的,如果已知了要切割多少份,那么切割点的位置是可以算出来的。
所以我们可以枚举切成的两块小蛋糕包含多少份。
大暴搜就行了。
/* Footprints In The Blood Soaked Snow */ #include <cstdio> #include <algorithm> using namespace std; typedef double DB; const int inf = 0x3f3f3f3f; inline DB dfs(DB x, DB y, int n) { if(n == 1) return x < y ? y / x : x / y; DB u = x / n, v = y / n, ans = inf; for(int i = 1; i < n; i++) { ans = min(ans, max(dfs(u * i, y, i), dfs(u * (n - i), y, n - i))); ans = min(ans, max(dfs(x, v * i, i), dfs(x, v * (n - i), n - i))); } return ans; } int main() { int x, y, n; scanf("%d%d%d", &x, &y, &n); printf("%.6lf\n", dfs(x, y, n)); return 0; }