LA2402暴力枚举+计算几何+四边形面积
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暴力枚举+计算几何+四边形面积相关推荐
- Gym - 102460L Largest Quadrilateral(几何-凸包+旋转卡壳求最大的四边形面积)
题目链接:点击查看 题目大意:在笛卡尔坐标系上给出 n 个点,要求选出四个点,使得组成的四边形面积最大,求出这个最大的面积,注意此处组成的四边形不是严格意义上的四边形,只需要选四个点就行 题目分析:首 ...
- bzoj1069: [SCOI2007]最大土地面积 凸包+旋转卡壳求最大四边形面积
在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成的多边形面积最大. 题解:先求出凸包,O(n)枚举旋转卡壳,O(n)枚举另一个点,求最大四边形面积 /* ...
- 搜索初步-暴力枚举总结与举例
暴力枚举 一.过程: 暴力枚举是将所有情况都进行枚举出,并找到自己的目标的值的过程. 二.方法: 1.用多重循环嵌套,用来寻找在一个数组中的一个值是否与其他的一个或多个值相关. (这里的相关表示为加减 ...
- 菜鸡HP的被虐日常(1)难搞的四边形面积①
ByHolyPushBy \quad HolyPushByHolyPush 在RtΔABCRt\Delta ABCRtΔABC中,BBB为直角,A=60°A=60°A=60°,AB=43AB=4\sq ...
- 求最大的四边形面积 + 叉乘的应用
/*求四边形面积 + 叉乘的应用 http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=952题意:有n个点,求这些点能组成的最大四边形面积思路:两层 ...
- POJ 3174 暴力枚举
思路: 暴力枚举三个点 判一判 搞定 (x1*y1=x2*y2) x1.y1.x2.y2为他们两两的差 //By SiriusRen #include <cstdio> using nam ...
- codeforces数学1600day6[CodeForces - 1029C多区间交+枚举,CodeForces 992C[数学公式推导],CodeForces 992B[质因数分解+暴力枚举]]
A - Maximal Intersection CodeForces - 1029C 题目大意:就是给你n个区间,这n个区间有公共的区间长度为x,现在叫你从这n个区间中删掉一个使得x最大化. 解题思 ...
- 最大字段和 冲出暴力枚举
这篇解题报告是对我最近一些题的总结,里面的代码都是我解题,优化,再优化的过程的记录,记录了自己对算法的完善与优化思路,还有对编程哲学的理解:do it,do it well. 很感谢孙老师您,让自己可 ...
- hdu 4587 TWO NODES 暴力枚举+tarjan
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4587 题意是拿掉两个点 求最多可以把整个图分成几个联通块 注意到有一个模板是可以通过找割点来快速求出 ...
最新文章
- [导入]XML for Analysis(XMLA)开发详解-(3)各版本的SQL Server及Windows下配置XMLA over HTTP访问SASS(OLAP)的文档合集...
- BZOJ 4407: 于神之怒加强版
- 关于program patterns的一些思考
- [Python图像处理] 十一.灰度直方图概念及OpenCV绘制直方图
- 1、python基础速成
- Redis 集合处理
- 又一起!北大副校长詹启敏院士被疑25篇论文造假
- 非极大值抑制(NMS)
- python行与缩进_Python行结构与缩进的简单介绍
- VS2008源代码管理软件组合-visualSVN Server+TortoiseSVN+AnkhSvn
- Serverless 全能选手,再添一“金”
- 华为交换机安全端口实验
- Domino XML Language(DXL)简介
- c语言程序书写时每行必须有行号,C语言阶段复习一.doc
- ios 边录音边放_iOS 录音、音频的拼接剪切以及边录边压缩转码
- Instant Run(App加壳)
- intelx79服务器芯片组,Intel X79 高速芯片组是什么
- ASP入门(一)环境的搭建
- 处理png图片为透明
- RESTful API 末尾斜杠