Fishnet(几何)
http://poj.org/problem?id=1408
题意:给出 a1 a2 ... an
b1 b2 ... bn
c1 c2 ... cn
d1 d2 ... dn 这些点,求这些对应点连线形成的小四边形的最大面积。
思路:将所有的交点求出,同已知点一起存入二维矩阵中,枚举每个小四边形,求出其面积,找出最大的即可。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
const double eps=1e-;//设置精度
#define max1(a1,b1) (double)a1-(double)b1>eps?(double)a1:(double)b1
struct point//点
{
double x;
double y;
} map[][];//用二维数组的结构体存储所有的点
struct line//线
{
double a,b,c;
};
line getline(point p1,point p2)//由两点求直线ax+by+c=0
{
line tmp;
tmp.a = p1.y-p2.y;
tmp.b = p2.x-p1.x;
tmp.c = p1.x*p2.y-p2.x*p1.y;
return tmp;
}
point getIntersect(line L1,line L2)//求两直线交点
{
point tmp;
tmp.x = (L1.b*L2.c-L2.b*L1.c)/(L1.a*L2.b-L2.a*L1.b);
tmp.y = (L1.c*L2.a-L2.c*L1.a)/(L1.a*L2.b-L2.a*L1.b);
return tmp;
}
double area_polygon(int n,point* p)//求多边形面积
{
double s1=,s2=;
int i;
for (i=; i<n; i++)
{
s1+=p[(i+)%n].y*p[i].x;
s2+=p[(i+)%n].y*p[(i+)%n].x;
}
return fabs(s1-s2)/;
}
int main()
{
int n;
while(~scanf("%d",&n)&&n)
{
double Max = eps;
double a,b,c,d;
map[][].x = ;//初始化已知的四个顶点的坐标
map[][].y = ;
map[][n+].x = ;
map[][n+].y = ;
map[n+][].x = ;
map[n+][].y = ;
map[n+][n+].x = ;
map[n+][n+].y = ;
for (int j = ; j <= n; j++)//输入a1 a2 ... an,并存储其坐标
{
scanf("%lf",&a);
map[][j].x = a;
map[][j].y = ;
}
for (int j = ; j <= n; j++)//输入b1 b2 ... bn,并存储其坐标
{
scanf("%lf",&b);
map[n+][j].x = b;
map[n+][j].y = ;
}
for (int i = ; i <= n; i++)//输入c1 c2 ... cn,并存储其坐标
{
scanf("%lf",&c);
map[i][].x = ;
map[i][].y = c;
}
for (int i =; i <= n; i++)//输入d1 d2 ... dn,并存储其坐标
{
scanf("%lf",&d);
map[i][n+].x = ;
map[i][n+].y = d;
}
for (int i = ; i <= n; i++)
for (int j = ; j <= n; j++)
{
line L1 = getline(map[i][],map[i][n+]);//枚举所有可相交的直线
line L2 = getline(map[][j],map[n+][j]);
point tmp = getIntersect(L1,L2);//求这两条线的交点
map[i][j].x = tmp.x;//将求得的交点坐标存入相应的数组中
map[i][j].y = tmp.y; }
point p[];//存储四边形的顶点
for (int i = ; i <= n+; i++)
{ for (int j = ; j <= n+; j++)//枚举所有四边形右上角的顶点
{
p[] = map[i][j];//以map[i][j]为右上角的顶点组成的四边形的各点
p[] = map[i][j-];
p[] = map[i-][j-];
p[] = map[i-][j];
double s = area_polygon(,p);//求四边形的面积
Max = max1(s,Max);//求最大面积
} }
printf("%.6f\n",Max);
}
return ;
}
Fishnet(几何)的更多相关文章
- [ACM_几何] Fishnet
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28417#problem/C 本题大意:有一个1X1的矩形,每边按照从小到大的顺序给n ...
- 关于Three.js基本几何形状之SphereGeometry球体学习
一.有关球体SphereGeometry构造函数参数说明 <1>.SphereGeometry(radius, widthSegments, heightSegments, phiStar ...
- 几何服务,cut功能测试
关于几何服务 几何服务用于辅助应用程序执行各种几何计算,如缓冲区.简化.面积和长度计算以及投影.在 ArcGIS Server 管理器中启动几何服务之后,您才能够在应用程序开发过程中使用该服务. 问题 ...
- 几何服务,cut功能,输入要素target(修改后)内容。
几何服务,cut功能测试,输入要素target(修改后)内容. {"displayFieldName":"","fieldAliases": ...
- 几何服务,cut功能,输入要素target(修改前)内容。
几何服务,cut功能测试,输入要素target(修改前)内容. {"geometryType":"esriGeometryPolyline","geo ...
- 如何让你的UWP应用程序无缝调用几何作图
有时候需要编辑一些几何图形,如三角形,圆锥曲线等,在UWP应用中加入这些几何作图功能是件费时间又很难做好的事.其实Windows 10 应用商店中已有一些专业的几何作图工具了,那么能借来一用吗?答案是 ...
- poj 2031Building a Space Station(几何判断+Kruskal最小生成树)
/* 最小生成树 + 几何判断 Kruskal 球心之间的距离 - 两个球的半径 < 0 则说明是覆盖的!此时的距离按照0计算 */ #include<iostream> #incl ...
- NOIP2002矩形覆盖[几何DFS]
题目描述 在平面上有 n 个点(n <= 50),每个点用一对整数坐标表示.例如:当 n=4 时,4个点的坐标分另为:p1(1,1),p2(2,2),p3(3,6),P4(0,7),见图一. 这 ...
- DOM 元素节点几何量与滚动几何量
当在 Web 浏览器中查看 HTML 文档时,DOM 节点被解析,并被渲染成盒模型(如下图),有时我们需要知道一些信息,比如盒模型的大小,盒模型在浏览器中的位置等等,本文我们就来详细了解下元素节点的几 ...
随机推荐
- Centos 修改源
1首先备份原来的配置文件: mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2下载对应版本r ...
- 【技术累积】【点】【java】【30】代理模式
基础 代理模式是Java常见的设计模式之一.所谓代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象. 什么是代理 参考现实生活中的代理 比如某个品牌的某个省的代理商,作 ...
- codeforces_725C_字符串
C. Hidden Word time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...
- day04-交互、格式化输出及基本运算符
目录 与用户交互 python2和python3交互的区别 格式化输出 1 字符串拼接 2 占位符 3 format格式 4 f-string格式 基本运算符 算术运算符 比较运算符 赋值运算符 逻辑 ...
- 第八节:numpy之四则运算与逻辑运算
- .Net防sql注入的方法总结
#防sql注入的常用方法: 1.服务端对前端传过来的参数值进行类型验证: 2.服务端执行sql,使用参数化传值,而不要使用sql字符串拼接: 3.服务端对前端传过来的数据进行sql关键词过来与检测: ...
- 敏捷开发系列学习总结(5)——这几招搞定团队协同Coding
一个团队在一起Coding时,就怕发生这样的事情:同1个文件你改了,我也改了,他也改了,最后怎么同步呢?以前用clearcase时,A把文件checkout了,其他人就不能提交,保证了代码的唯一性.但 ...
- crontab定时任务安装、使用方法
本文介绍下,在linux中安装crontab的方法,以及crontab的具体用法,有需要的朋友参考下. 这里使用yum方式安装crontab: 复制代码代码示例: [root@CentOS ~]# ...
- cogs 2478. [HZOI 2016]简单的最近公共祖先
2478. [HZOI 2016]简单的最近公共祖先 ★☆ 输入文件:easy_LCA.in 输出文件:easy_LCA.out 简单对比时间限制:2 s 内存限制:128 MB [题 ...
- 浅谈 System.Decimal 结构
引言 我们知道,Microsoft .NET Framework 中的 System.Decimal 结构(在 C# 语言中等价于 decimal keyword)用来表示十进制数,范围从 -(296 ...