zoukankan      html  css  js  c++  java
  • bzoj1024

    题意:

    给你一个x*y的矩阵,让你把他用n-1次切割分成n块

    要求每一块的长与宽的比值最大的最小

    求这个比值(保留6位小数)

    题解:

    本来想用二分来做

    然而n<=10

    所以我们可以暴力枚举+贪心

    每一次怎么分,分列还是行

    当n=1的时候特判边界即可

    代码:

    #include<bits/stdc++.h> 
    using namespace std;  
    typedef double db;  
    db x,y,n;
    db dfs(db x,db y,db d)  
    {  
        db ans=1000000007;  
        if (d==1)  
         {  
            if (x<y)swap(x,y);  
            return x/y;  
         }  
        db mx=x/d,my=y/d;  
        db ans1,ans2;  
        for (db i=1;i<=d/2;i+=1.0)  
         {  
            ans1=max(dfs(mx*i,y,i),dfs(x-mx*i,y,d-i));  
            ans2=max(dfs(x,my*i,i),dfs(x,y-my*i,d-i));  
            ans=min(ans,min(ans1,ans2));  
         }  
        return ans;  
    }  
    int main()  
    {  
        scanf("%lf%lf%lf",&x,&y,&n);  
        printf("%.6lf",dfs(x,y,n));  
        return 0;  
    }  
  • 相关阅读:
    带你走进Ajax
    基础
    基础
    基础-文字
    C++ part6.5
    操作系统 part4
    操作系统 part3
    计算机网络 part3 HTTP&HTTPS
    计算机网络 part2
    计算机网络 part1 TCP
  • 原文地址:https://www.cnblogs.com/xuanyiming/p/8446046.html
Copyright © 2011-2022 走看看