码迷,mamicode.com
首页 > 其他好文 > 详细

UESTC 2014 Summer Training #5 Div.2

时间:2014-07-19 08:38:09      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   strong   os   

持续更新中

B:URAL 1874 三分搜索

【题意】:

给出两条边a,b以及一个墙角,求由这两条边和墙角所构成的四边形的最大面积。
【知识点】:

三分搜索
【题解】:

将四边形分为两个三角形,其中一个由a,b,以及第三条同时作为墙角斜边的边c,另一个三角形即为墙角与边c构成

则墙角所在的三角形的最大面积为c*c/4,abc变所在的三角形的面积可用海伦公式求出,然后主要是用三分来求这个c,得到c后就可以得到最佳答案了。

还有一种现成的结论。。。
【代码1】:

bubuko.com,布布扣
 1 #include <map>
 2 #include <set>
 3 #include <cmath>
 4 #include <ctime>
 5 #include <queue>
 6 #include <stack>
 7 #include <cstdio>
 8 #include <iomanip>
 9 #include <string>
10 #include <vector>
11 #include <cstring>
12 #include <sstream>
13 #include <iostream>
14 #include <fstream>
15 #include <algorithm>
16 #include <bitset>
17 #include <climits>
18 #include <ostream>
19 #include <ios>
20 #include <cstdlib>
21 using namespace std;
22 
23 #define wh while
24 #define inf (int)(~0u/2)
25 #define FOR(i, n) for(int i = 0; i < n; i++)
26 #define FOR1(i, n) for(int i = 1; i < n; i++)
27 #define FOR2(i, n) for(int i = 0; i <= n; i++)
28 #define REP(i,n) for(int i = 1; i <= n; i++)
29 #define FORI(it,n) for(typeof(n.begin()) it = n.begin(); it != n.end(); it++)
30 #define sf scanf
31 #define pf printf
32 #define frs first
33 #define sec second
34 #define psh push_back
35 #define mkp make_pair
36 #define PB(x) push_back(x)
37 #define MP(x, y) make_pair(x, y)
38 #define clr(abc,z) memset(abc,z,sizeof(abc))
39 #define lt(v) v << 1
40 #define rt(v) v << 1 | 1
41 #define mid ((l + r) >> 1)
42 #define lson l, mid, v << 1
43 #define rson mid + 1, r, v << 1 | 1
44 
45 #define fre freopen("1.txt", "r", stdin)
46 
47 typedef long long LL;
48 typedef long double LD;
49 const double eps = 1e-8;
50 
51 double area(double x, double y, double z){
52     double p = (x + y + z) / 2;
53     return (z * z / 4.0 + sqrt(p * (p - x) * (p - y) * (p - z)));
54 }
55 
56 int main(){
57     double x, y;
58     sf("%lf%lf", &x, &y);
59     double l = 0.0, r = x + y;
60     double md;
61     wh(fabs(r - l) > eps){
62         md = (l + r) / 2;
63         double mdl = (md + l) / 2;
64         double mdr = (md + r) / 2;
65         double v1 = area(x, y, mdl), v2 = area(x, y, mdr);
66         if(v1 > v2)
67             r = (md + r) / 2;
68         else
69             l = (md + l) / 2;
70     }
71     pf("%lf", area(x, y, md));
72 }
View Code

【代码2】:

结论关键代码

bubuko.com,布布扣
1 int main(){
2     int a, b;
3     sf("%d%d", &a, &b);
4     pf("%lf\n", (a * a + b * b + 2 * sqrt(2) * a * b) / 4.0);
5     return 0;
6 }
View Code

UESTC 2014 Summer Training #5 Div.2,布布扣,bubuko.com

UESTC 2014 Summer Training #5 Div.2

标签:style   blog   http   color   strong   os   

原文地址:http://www.cnblogs.com/Ntcrush/p/3854417.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!