题意:如左图,给定A,B,C,D的面积分别为大于等于a,b,c,d,求最小的面积

思路:因为a,b肯定有一个是满的(不然还可压缩到更小),同理,ac,bd,cd都只有一个是满的,所以有可能是对角满的,a,d满的或者,bc满的,如下图

所以,当ad > bc是,ad满,否则bc满(长方形,分成四块,对角面积之积相等)

现在我们来考虑图一:

如题给定,则: p1 * q1 = a;

p2 * q2 = d;

条件: p2 * q1 >= c, p1 * q2 >= b; 即 : p2 / p1 > c / a, p2 / p1 < b / d;

答案为 min(p2 * q1 + p1 * q2) ,代入最上边的等式,得 ans = min(p2 / p1 * a + p1 / p2 * d);

设 t = p2 / p1;

由基本不等式,得 ans >= 2*sqrt(a * b);, 当且仅当 t = sqrt(a * b)取到。。

所以判断 t在不在条件里面,不再就判断端点就行。。

另外一种情况同样考虑即可。。。

只怪比赛时思路太搓了。。数学渣。。。

 #include <iostream>
#include <cstring>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <set>
#include <vector>
#include <cstdlib>
#define M0(a) memset(a, 0, sizeof(a))
#define MXN 100010
#define Inf 0xfffff
#define eps 1e-6
double a, b, c, d;
double v;
double p1, p2, q1, q2; void work1(){
p1 = 1.0;
p2 = sqrt(d / a);
if (p2 > d/b) p2 = d /b;
if (p2 < c/a) p2 = c /a;
q1 = a / p1;
q2 = d / p2;
} void work2(){
p1 = 1.0;
p2 = sqrt(c/b);
if (p2 > c/a) p2 = c/a;
if (p2 < d/b) p2 = d/b;
q1 = c / p2;
q2 = b / p1;
} void solve(){
if (a * d >= b * c) work1();
if (a * d < b * c) work2();
v = (p1 + p2) * (q1 + q2);
printf("%.10f\n", v);
printf("%.10f %0.10f %.10f %.10f\n", p1, p2, q1, q2);
} int main(){
// freopen("d.in", "r", stdin);
// freopen("d.out", "w", stdout);
int cas = ;
while (scanf("%lf%lf%lf%lf", &a, &b, &c, &d) != EOF){
solve();
}
fclose(stdin); fclose(stdout);
}

zoj2607的更多相关文章

随机推荐

  1. Centos7 上安装 FastDFS

    1.安装gcc(编译时需要) FastDFS是C语言开发,安装FastDFS需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc yum install -y gcc ...

  2. 2019年Java未来的发展方向

    2018即将结束,迎来2019年,Java作为世界上 最流行的计算机编程语言,在当今信息时代中发挥了重要的作用.Java语言本身具有着自己独特的优势:面向对象.分布式应用并且安全.多线程.跨平台等.这 ...

  3. shell脚本${}、##和%%使用范例

    file=/dir1/dir2/dir3/my.file.txt 可以用${ }分别替换得到不同的值: ${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.fi ...

  4. git分支切换时的时间戳问题

    1.为什么git仓库没有保留文件修改时的时间戳?  摘自:https://git.wiki.kernel.org/index.php/Git_FAQ#Why_isn.27t_Git_preservin ...

  5. mongo数据库的y2038问题

    查阅mongo for c driver 驱动源码, 发现其 _id 是 12byte  ,其中头4字节,调用time(NULL), 这个函数存在y2038问题. 建议是修改为16byte ,前面8b ...

  6. Composer 中文镜像 Lavavel-china 公益项目

    『Composer 中国全量镜像』是由 Laravel China 社区联合 又拍云 与 优帆远扬 共同合作推出的公益项目,旨在为广大 PHP 用户提供稳定和高速的 Composer 国内镜像服务. ...

  7. urllib和requests库

    目录 1. Python3 使用urllib库请求网络 1.1 基于urllib库的GET请求 1.2 使用User-Agent伪装后请求网站 1.3 基于urllib库的POST请求,并用Cooki ...

  8. JavaScript中hasOwnProperty函数

      JavaScript中hasOwnProperty函数方法是返回一个布尔值,指出一个对象是否具有指定名称的属性. 使用方法: object.hasOwnProperty(proName) 其中参数 ...

  9. 20 模块之 re subprocess

    re: 什么是正则: 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则.(在Python中)它内嵌在Python中,并通过 ...

  10. 45.UITableView去除分割线

    1.去除所有的分割线 table.separatorStyle = UITableViewCellSelectionStyleNone; 2.去除指定某一行的分割线 cell.separatorIns ...