1 /*
  2 LA2402:
  3 题意:在矩形中给定横线(竖)之间不交叉的n对线,求被分割的小块的最大面积
  4 读懂题意就可以发现是思路很简单的题目
  5 枚举+几何计算,时间复杂度度不高
  6 熟悉了部分函数的运用
  7
  8 */
  9 #include <stdio.h>
 10 #include <stdlib.h>
 11 #include <string.h>
 12 #include <math.h>
 13 #include <ctype.h>
 14 #include <string>
 15 #include <iostream>
 16 #include <sstream>
 17 #include <vector>
 18 #include <queue>
 19 #include <stack>
 20 #include <map>
 21 #include <list>
 22 #include <set>
 23 #include <algorithm>
 24
 25 using namespace std;
 26
 27 struct Point
 28 {
 29     double x,y;
 30     Point(double x=0,double y=0):x(x),y(y){}
 31     void print()
 32     {
 33         cout<<"("<<x<<","<<y<<")"<<endl;
 34     }
 35 };
 36
 37 typedef Point Vector;
 38
 39 Vector operator-(Point A,Point B)//表示A指向B
 40 {
 41     return Vector(A.x-B.x,A.y-B.y);
 42 }
 43 Vector operator*(Vector A,double k)
 44 {
 45     return Vector(A.x*k,A.y*k);
 46 }
 47 Vector operator+(Point A,Point B)//表示A指向B
 48 {
 49     return Vector(B.x+A.x,B.y+A.y);
 50 }
 51 double Cross(Vector A,Vector B) {return A.x*B.y-A.y*B.x;}
 52 double Area(Point A,Point B,Point C)//三角形面积
 53 {
 54     return  fabs(Cross(B-A,C-A))/2;
 55 }
 56 struct Line
 57 {
 58     Point p;
 59     Vector v;
 60     Line(Point p,Vector v):p(p),v(v){}
 61 };
 62 Line Getline(Point A,Point B)//求直线AB
 63 {
 64     Vector u=A-B;
 65     return Line(A,u);
 66 }
 67 Point InterSection(Line L1,Line L2)//求直线交点
 68 {
 69     Vector u=L1.p-L2.p;
 70     double t=Cross(L2.v,u)/Cross(L1.v,L2.v);
 71     return L1.p+L1.v*t;
 72 }
 73 double a[50],b[50],c[50],d[50];
 74 int n;
 75 int main()
 76 {
 77     while(cin>>n)
 78     {
 79         if(!n) break;
 80         for(int i=1;i<=n;i++) cin>>a[i];
 81         for(int i=1;i<=n;i++) cin>>b[i];
 82         for(int i=1;i<=n;i++) cin>>c[i];
 83         for(int i=1;i<=n;i++) cin>>d[i];
 84         a[0]=0;b[0]=0;c[0]=0;d[0]=0;
 85         a[n+1]=1;b[n+1]=1;c[n+1]=1;d[n+1]=1;
 86         double m=-1;
 87         for(int i=0;i<=n;i++)//外层枚举相邻的横线
 88         {
 89             Line L1=Getline(Point(0,c[i]),Point(1,d[i]));
 90             Line L2=Getline(Point(0,c[i+1]),Point(1,d[i+1]));
 91             for(int j=0;j<=n;j++)//内层枚举相邻的竖线
 92             {
 93             Line L3=Getline(Point(a[j],0),Point(b[j],1));//一开始写成i,= =!
 94             Line L4=Getline(Point(a[j+1],0),Point(b[j+1],1));
 95             Point P1=InterSection(L1,L3);
 96             Point P2=InterSection(L1,L4);
 97             Point P3=InterSection(L2,L4);
 98             Point P4=InterSection(L2,L3);
 99             double S=Area(P1,P2,P4)+Area(P2,P3,P4);
100 //            P1.print();P2.print();P3.print();P4.print();
101 //            cout<<"A1="<<Area(P1,P2,P4)<<endl;
102 //            cout<<"A2="<<Area(P2,P3,P4)<<endl;
103 //            cout<<"S="<<S<<endl;
104             if (S>m) m=S;
105             }
106         }
107         printf("%.6lf\n",m);
108     }
109     return 0;
110 }

转载于:https://www.cnblogs.com/little-w/p/3570204.html

LA2402暴力枚举+计算几何+四边形面积相关推荐

  1. Gym - 102460L Largest Quadrilateral(几何-凸包+旋转卡壳求最大的四边形面积)

    题目链接:点击查看 题目大意:在笛卡尔坐标系上给出 n 个点,要求选出四个点,使得组成的四边形面积最大,求出这个最大的面积,注意此处组成的四边形不是严格意义上的四边形,只需要选四个点就行 题目分析:首 ...

  2. bzoj1069: [SCOI2007]最大土地面积 凸包+旋转卡壳求最大四边形面积

    在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成的多边形面积最大. 题解:先求出凸包,O(n)枚举旋转卡壳,O(n)枚举另一个点,求最大四边形面积 /* ...

  3. 搜索初步-暴力枚举总结与举例

    暴力枚举 一.过程: 暴力枚举是将所有情况都进行枚举出,并找到自己的目标的值的过程. 二.方法: 1.用多重循环嵌套,用来寻找在一个数组中的一个值是否与其他的一个或多个值相关. (这里的相关表示为加减 ...

  4. 菜鸡HP的被虐日常(1)难搞的四边形面积①

    ByHolyPushBy \quad HolyPushByHolyPush 在RtΔABCRt\Delta ABCRtΔABC中,BBB为直角,A=60°A=60°A=60°,AB=43AB=4\sq ...

  5. 求最大的四边形面积 + 叉乘的应用

    /*求四边形面积 + 叉乘的应用 http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=952题意:有n个点,求这些点能组成的最大四边形面积思路:两层 ...

  6. POJ 3174 暴力枚举

    思路: 暴力枚举三个点 判一判 搞定 (x1*y1=x2*y2) x1.y1.x2.y2为他们两两的差 //By SiriusRen #include <cstdio> using nam ...

  7. codeforces数学1600day6[CodeForces - 1029C多区间交+枚举,CodeForces 992C[数学公式推导],CodeForces 992B[质因数分解+暴力枚举]]

    A - Maximal Intersection CodeForces - 1029C 题目大意:就是给你n个区间,这n个区间有公共的区间长度为x,现在叫你从这n个区间中删掉一个使得x最大化. 解题思 ...

  8. 最大字段和 冲出暴力枚举

    这篇解题报告是对我最近一些题的总结,里面的代码都是我解题,优化,再优化的过程的记录,记录了自己对算法的完善与优化思路,还有对编程哲学的理解:do it,do it well. 很感谢孙老师您,让自己可 ...

  9. hdu 4587 TWO NODES 暴力枚举+tarjan

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4587 题意是拿掉两个点 求最多可以把整个图分成几个联通块 注意到有一个模板是可以通过找割点来快速求出 ...

最新文章

  1. [导入]XML for Analysis(XMLA)开发详解-(3)各版本的SQL Server及Windows下配置XMLA over HTTP访问SASS(OLAP)的文档合集...
  2. BZOJ 4407: 于神之怒加强版
  3. 关于program patterns的一些思考
  4. [Python图像处理] 十一.灰度直方图概念及OpenCV绘制直方图
  5. 1、python基础速成
  6. Redis 集合处理
  7. 又一起!北大副校长詹启敏院士被疑25篇论文造假
  8. 非极大值抑制(NMS)
  9. python行与缩进_Python行结构与缩进的简单介绍
  10. VS2008源代码管理软件组合-visualSVN Server+TortoiseSVN+AnkhSvn
  11. Serverless 全能选手,再添一“金”
  12. 华为交换机安全端口实验
  13. Domino XML Language(DXL)简介
  14. c语言程序书写时每行必须有行号,C语言阶段复习一.doc
  15. ios 边录音边放_iOS 录音、音频的拼接剪切以及边录边压缩转码
  16. Instant Run(App加壳)
  17. intelx79服务器芯片组,Intel X79 高速芯片组是什么
  18. ASP入门(一)环境的搭建
  19. 处理png图片为透明
  20. RESTful API 末尾斜杠

热门文章

  1. Python 字典类型转换json格式
  2. 旭元数艺:数创未来,智攀高峰
  3. 全球各国城镇人口数量(1960-2019年)
  4. questionnaire-template调查问卷快速实现组件引入与使用说明
  5. 分享一位小姐姐的秋招银行面试~
  6. MPCS-314P-T1一款光电耦合器 适用于驱动功率IGBT和MOSFET 门驱动器光电耦合器
  7. 【社会调研】访谈个案案例分享
  8. QVM 实操记 - 18.12.28
  9. 免费好用的外网映射工具
  10. 思考14. 为什么我们要全力以赴