zoukankan      html  css  js  c++  java
  • [BZOJ1024][SCOI2009]生日快乐解题报告

    Description

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

      最简单的暴搜...枚举这一刀下去分成两边的块数和是横切还是竖切就好了...因为n<=10所以就算这么暴力还是可以过...

     1 /**************************************************************
     2     Problem: 1024
     3     Author: mjy0724
     4     Time:572 ms
     5     Memory:224 kb
     6 ****************************************************************/
     7  
     8 program bzoj1024;
     9 var x,y:extended;
    10     p:longint;
    11  
    12 function max(a,b:extended):extended;
    13 begin
    14     if a>b then exit(a) else exit(b);
    15 end;
    16  
    17 function min(a,b:extended):extended;
    18 begin  
    19     if a<b then exit(a) else exit(b);
    20 end;
    21  
    22 function dfs(x,y:extended;p:longint):extended;
    23 var ans:extended;   
    24     i:longint;
    25 begin
    26     if p=1 then exit(max(x/y,y/x));
    27     ans:=min(max(dfs(x*1/p,y,1),dfs(x-x*1/p,y,p-1)),max(dfs(x,y*1/p,1),dfs(x,y-y*1/p,p-1)));
    28     for i:=1 to p >> 1 do
    29         ans:=min(ans,min(max(dfs(x*i/p,y,i),dfs(x-x*i/p,y,p-i)),max(dfs(x,y*i/p,i),dfs(x,y-y*i/p,p-i))));
    30     exit(ans);  
    31 end;
    32  
    33 begin
    34     readln(x,y,p);
    35     writeln(dfs(x,y,p):0:6);
    36 end.

      

  • 相关阅读:
    Visual Studio Code的常用快捷键
    requests模块
    爬虫基本原理
    Django-分页、中间件和请求的声明周期
    Django-admin管理工具
    Django-form表单
    Django-认证系统
    cookie、session和token
    Ajax
    Django进阶Model篇—数据库操作(ORM)
  • 原文地址:https://www.cnblogs.com/mjy0724/p/4421419.html
Copyright © 2011-2022 走看看