ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

1026 [SCOI2009]生日快乐 dfs

2022-07-04 00:03:34  阅读:216  来源: 互联网

标签:1026 int double dfs windy le SCOI2009 蛋糕 生日快乐


链接:https://ac.nowcoder.com/acm/contest/23156/1026
来源:牛客网

题目描述

windy的生日到了,为了庆祝生日,他的朋友们帮他买了一个边长分别为 X 和 Y 的矩形蛋糕。现在包括windy ,一共有 N 个人来分这块大蛋糕,要求每个人必须获得相同面积的蛋糕。 windy主刀,每一切只能平行于一块蛋糕 的一边(任意一边),并且必须把这块蛋糕切成两块。这样,要切成 N 块蛋糕,windy必须切 N-1 次。 为了使得每块蛋糕看起来漂亮,我们要求 N块蛋糕的长边与短边的比值的最大值最小。你能帮助windy求出这个比值么?

输入描述:

包含三个整数,X Y N。
1 ≤ X,Y ≤ 10000 ; 1 ≤ N ≤ 10

输出描述:

包含一个浮点数,保留6位小数。
示例1

输入

复制
5 5 5

输出

复制
1.800000

备注:

100%的数据,满足1≤X,Y≤10000;1≤N≤101  \le  X,Y  \le  10000 ; 1  \le  N  \le  101≤X,Y≤10000;1≤N≤10 。

分析

二分,贪心,搜索。。

就搜索能用了,二分也分不出啥,这题数据量小。。

其实拿到题,完全不会写。。。我的第一思维好像是贪心,

然后看了雨巨。。手把手教搜索,是真的贴心

切蛋糕嘛,就就直接切。。

然后有个关键,必须切x/n,y/n的倍数的量,直接枚举这个量。然后当切到最后一个的时候计算一下y/x。

dfs(x,y,n)表示当前切的蛋糕的长,宽,需要切的数量


int dy[] = {1,0,-1,0,1,1,-1,-1};
int dx[] = {0,1,0,-1,1,-1,1,-1};

/*文档区


*/

//-------------------------代码----------------------------

//#define int LL
const int N = 1e5+10;
int x,y,n,m;

double dfs(double x,double y,int n) {
    if(n == 1) {
        return max(x,y) / min(x,y);
    }
    double a = x / n,b = y / n,ans = 0x3f3f3f3f;
    for(int i = 1;i <= n / 2;i++) {
        ans = min(ans, min(max(dfs(i * a, y, i), dfs(x - i * a, y, n - i)), max(dfs(x, i * b, i), dfs(x, y - i * b, n - i))));    }
    return ans ;
}

void solve()
{
     cin>>x>>y>>n;
//     V<V<int>>mp(n+1,V<int>(m+1));
     printf("%.6lf\n",dfs(x,y,n));
}

signed main(){
    clapping();TLE;
    
//    int t;cin>>t;while(t -- )
    solve();
//    {solve(); }
    return 0;
}

/*样例区


*/

//------------------------------------------------------------

标签:1026,int,double,dfs,windy,le,SCOI2009,蛋糕,生日快乐
来源: https://www.cnblogs.com/er007/p/16441342.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有