• BZOJ_1024_[SHOI2008]_生日快乐_(dfs)


    描述


    http://www.lydsy.com/JudgeOnline/problem.php?id=1024

    给出一个(x*y)的距形,要求平行于边切,最终切成(n)个面积相等的小距形,求长边与短边比值的最大值的最小值,

    分析


    注意到一个性质,如果把一个距形分成(x)份,由于这(x)份面积相等,所以第一刀一定是按比例分的,而不是随便切.所以dfs就可以了.

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 int n,x,y;
     5 double dfs(double x,double y,int n){
     6     if(n==1) return max(x/y,y/x);
     7     int up=n>>1; double ans=1e9;
     8     for(int i=1;i<=up;i++){
     9         ans=min(ans,max(dfs(x/n*i,y,i),dfs(x/n*(n-i),y,n-i)));
    10         ans=min(ans,max(dfs(x,y/n*i,i),dfs(x,y/n*(n-i),n-i)));
    11     }
    12     return ans;
    13 }
    14 int main(){
    15     scanf("%d%d%d",&x,&y,&n);
    16     printf("%.6lf
    ",dfs(x,y,n));
    17     return 0;
    18 }
    View Code

    1024: [SCOI2009]生日快乐

    Time Limit: 1 Sec  Memory Limit: 162 MB
    Submit: 2264  Solved: 1640
    [Submit][Status][Discuss]

    Description

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

    Input

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

    Output

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

    Sample Input

    5 5 5

    Sample Output

    1.800000

    HINT

    Source

  • 相关阅读:
    android data binding jetpack I 环境配置 model-view 简单绑定
    java 直接内存
    Android内存管理机制
    使用老版本的java api提交hadoop作业
    通过java api提交自定义hadoop 作业
    hadoop错误总结
    linux下eclipse闪退和重装jdk的方法
    完全分布式安装hadoop
    hadoop伪分布式安装
    2014年度总结
  • 原文地址:https://www.cnblogs.com/Sunnie69/p/5648860.html
Copyright © 2020-2023  润新知