【BZOJ 1024】 [SCOI2009]生日快乐
2017-10-04 18:45
323 查看
【题目链接】:http://www.lydsy.com/JudgeOnline/problem.php?id=1024
【题意】
【题解】
要求恰好分成n个部分;每个部分的面积都一样;
则dfs的时候三个域分别表示矩形的长宽以及要被切成的份数;
每次切一刀下去的时候肯定是按照比例分配的;
比如要这一刀切下去(假设竖着切)之后左边还要切x刀,右边切y刀
则左边肯定要分配当前面积的x/(x+y),右边肯定要分配当前面积的y/(x+y)
因为之后每一刀你都得按比例分啊.
又只能横着切、竖着切,没有其他的变数
所以如果不按照上面的方法根本不可能切成的每个块面积都一样的。
【完整代码】
#include <bits/stdc++.h> using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define LL long long #define rep1(i,a,b) for (int i = a;i <= b;i++) #define rep2(i,a,b) for (int i = a;i >= b;i--) #define mp make_pair #define pb push_back #define fi first #define se second #define rei(x) scanf("%d",&x) #define rel(x) scanf("%lld",&x) #define ref(x) scanf("%lf",&x) typedef pair<int, int> pii; typedef pair<LL, LL> pll; const int dx[9] = { 0,1,-1,0,0,-1,-1,1,1 }; const int dy[9] = { 0,0,0,-1,1,-1,1,-1,1 }; const double pi = acos(-1.0); const int N = 110; int x, y, n; void input_data() { rei(x), rei(y), rei(n); } double dfs(double x, double y, int z) { if (z == 1) { if (x < y) swap(x, y); return x / y; } double tt = z; double xx = x / tt; double z1 = 21e8; rep1(i, 1, z-1) { double t = xx*i; double temp1 = dfs(t, y, i); temp1 =max(temp1, dfs(x - t, y, z - i)); z1 = min(z1, temp1); } double yy = y / tt; rep1(i, 1, z-1) { double t = yy*i; double temp1 = dfs(x, t, i); temp1 = max(temp1, dfs(x, y - t, z - i)); z1 = min(z1, temp1); } return z1; } int main() { //freopen("F:\\rush.txt", "r", stdin); input_data(); printf("%.6f\n", dfs(x, y, n)); //printf("\n%.2lf sec \n", (double)clock() / CLOCKS_PER_SEC); return 0; }
相关文章推荐
- 【bzoj1024】[SCOI2009]生日快乐
- 【bzoj 1024】: [SCOI2009]生日快乐
- BZOJ 1024 [SCOI2009]生日快乐
- 【BZOJ】【1024】【SCOI2009】生日快乐
- bzoj1024 [SCOI2009]生日快乐
- BZOJ 1024 【SCOI2009】 生日快乐
- bzoj1024 [SCOI2009]生日快乐
- BZOJ1024: [SCOI2009]生日快乐
- BZOJ 1024 [SCOI2009] 生日快乐
- [bzoj]1024: [SCOI2009]生日快乐
- bzoj1024: [SCOI2009]生日快乐
- BZOJ 1024: [SCOI2009]生日快乐
- 【bzoj1024】[SCOI2009]生日快乐
- BZOJ1024: [SCOI2009]生日快乐
- [BZOJ]1024: [SCOI2009]生日快乐
- BZOJ1024: [SCOI2009]生日快乐
- bzoj 1024 [SCOI2009]生日快乐
- BZOJ 1024: [SCOI2009]生日快乐
- bzoj 1024: [SCOI2009]生日快乐
- bzoj 1024: [SCOI2009]生日快乐