题意:

正方形四个边界上分别有n个点,将其划分为(n+1)2个四边形,求四边形面积的最大值。

分析:

因为n的规模很小,所以可以二重循环枚举求最大值。

求直线(a, 0) (b, 0) 和直线(0, c) (0, d)的交点,我是二元方程组求解得来的,然后再用叉积求面积即可。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cmath>
 4 #include <algorithm>
 5
 6 const int maxn = 30 + 10;
 7 struct HEHE
 8 {
 9     double a, b, c, d;
10 }hehe[maxn];
11
12 struct Point
13 {
14     double x, y;
15     Point(double x=0, double y=0):x(x), y(y) {}
16 };
17 typedef Point Vector;
18
19 Vector operator - (const Vector& A, const Vector& B)
20 { return Vector(A.x - B.x, A.y - B.y); }
21
22 double Cross(const Vector& A, const Vector& B)
23 { return (A.x*B.y - A.y*B.x); }
24
25 Point GetIntersection(const double& a, const double& b, const double& c, const double& d)
26 {
27     double x = (a+(b-a)*c) / (1-(b-a)*(d-c));
28     double y = (d-c)*x+c;
29     return Point(x, y);
30 }
31
32 int main(void)
33 {
34     //freopen("2402in.txt", "r", stdin);
35
36     int n;
37     while(scanf("%d", &n) == 1 && n)
38     {
39         memset(hehe, 0, sizeof(hehe));
40         for(int i = 1; i <= n; ++i) scanf("%lf", &hehe[i].a);
41         for(int i = 1; i <= n; ++i) scanf("%lf", &hehe[i].b);
42         for(int i = 1; i <= n; ++i) scanf("%lf", &hehe[i].c);
43         for(int i = 1; i <= n; ++i) scanf("%lf", &hehe[i].d);
44         hehe[n+1].a = hehe[n+1].b = hehe[n+1].c = hehe[n+1].d = 1.0;
45
46         double ans = 0.0;
47         for(int i = 0; i <= n; ++i)
48             for(int j = 0; j <= n; ++j)
49             {
50                 Point A, B, C, D;
51                 A = GetIntersection(hehe[i].a, hehe[i].b, hehe[j].c, hehe[j].d);
52                 B = GetIntersection(hehe[i+1].a, hehe[i+1].b, hehe[j].c, hehe[j].d);
53                 C = GetIntersection(hehe[i+1].a, hehe[i+1].b, hehe[j+1].c, hehe[j+1].d);
54                 D = GetIntersection(hehe[i].a, hehe[i].b, hehe[j+1].c, hehe[j+1].d);
55                 double temp = 0.0;
56                 temp += Cross(B-A, C-A) / 2;
57                 temp += Cross(C-A, D-A) / 2;
58                 ans = std::max(ans, temp);
59             }
60
61         printf("%.6f\n", ans);
62     }
63
64     return 0;
65 }

代码君

转载于:https://www.cnblogs.com/AOQNRMGYXLMV/p/4148827.html

LA 2402 (枚举) Fishnet相关推荐

  1. LA 5717枚举+最小生成树回路性质

    1 /*LA 5717 2 <训练指南>P343 3 最小生成树的回路性质 4 在生成的最小生成树上,新增一条边e(u,v) 5 若原图上u到v的路径的最大边大于e,则删除此边,加上e,否 ...

  2. UVa LA 4253 UVa 1421 Archery 枚举,状态削减,oj错误题目 难度: 1

    题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...

  3. Nim游戏的一个扩展——51nod 1661 黑板上的游戏+LA 5059 Playing With Stones

    前几天做过一道题目,是Nim游戏的一个扩展,也不能说扩展吧,只是说另一种常见的状态. 问题引入: 给定n堆石子,每堆石子有vi(1<=vi<=1e5) 个,每次可以取一堆中的一些石子,使得 ...

  4. 枚举项的数量限制在64个以内

    为了更好的使用枚举,Java提供了两个枚举集合:EnumSet和EnumMap,这两个集合的使用方法都比较简单,EnumSet表示其元素必须是某一枚举的枚举项,EnumMap表示Key值必须是某一枚举 ...

  5. [改善Java代码]枚举项的数量限制在64个以内

    为了更好的使用枚举,Java提供了两个枚举集合:EnumSet和EnumMap,这两个集合的使用方法都比较简单,EnumSet表示其元素必须是某一枚举的枚举项,EnumMap表示Key值必须是某一枚举 ...

  6. AcWing 2058. 笨拙的手指(暴力枚举)

    题目链接 https://www.acwing.com/problem/content/2060/ 思路 因为二进制和三进制有一位是错误的,那么我们直接二重循环枚举每一位,看更改后是否满足相等,如果是 ...

  7. Brownie Slicing(二分枚举答案)

    描述 Bessie has baked a rectangular brownie that can be thought of as an RxC grid (1 <= R <= 500 ...

  8. 2018-5-21关于c里枚举 没意思,不好玩 还有UB系列

    /*我怀疑我学的是假枚举,对于枚举唯一感觉就是 enum sm { sm1,sm2,sm3}这样子的.在我眼里这个东西好像并没有什么用属于和共用体union一样的东西,边看别人博客边写代码边实验的我帮 ...

  9. 【CS学习笔记】16、用户枚举三个关键步骤

    0x00 前言 用户枚举的三个关键步骤: 1.当前账号是否为管理员账号? 2.哪些账号是域管理员账号? 3.哪个账号是这个系统上的本地管理员账号? 0x01 管理员账号 第一个关键步骤,发现管理员账号 ...

最新文章

  1. grub安装的 三种安装方式
  2. Android和ios速度,不拼硬件拼体验 Android和iOS系统的加载速度测验
  3. OpenCV-图像锐化
  4. c 程序设计语言试卷,C语言程序设计试题及答案
  5. cnode社区vue和react渲染
  6. 制作名片设计需要哪些要素
  7. 刻在我心底的名字吉他谱-凡凡吉他教室编制
  8. linux给cpu加压命令,Linux中cpupower命令起什么作用呢?
  9. 纯java编写的联机五子棋项目(附带开源链接)
  10. Android11 Launcher添加网格布局设置(3x3,4x4,5x5)
  11. 5G路由器智慧灯杆无线联网解决方案
  12. centos6/7 vault源使用
  13. 2008年国家公务员面试2月27号真题
  14. 163888一个普通程序员写给COO李大学的一封Mail(不是转载)
  15. 条件判断语句 if case
  16. 前端检测图片加载失败,替换图片
  17. 审稿意见应该怎么写?这份审稿指南告诉你
  18. 如何精准化的做微信公众号运营?
  19. ubuntu桌面版下配置锐捷客户端
  20. 短视频下半场,随刻怎样跑赢?

热门文章

  1. gin go 更新缓存_golang自动缓存-对缓存策略的补充方案
  2. 使用OpenCV进行多边形绘制和填充
  3. 思维模型篇:四大战略分析工具
  4. Kaggle实战:点击率预估
  5. 大量DelegatingClassLoader类加载器,导致Perm区溢出
  6. spark-submit使用及说明
  7. 中间件(1)分布式缓存
  8. word2013标题编号变成黑框
  9. 38Exchange 2010升级到Exchange 2013-安装第二台CAS2013
  10. Sublime Text 2 入门技巧