poj 1408 Fishnet(计算几何)
2013-03-01 18:01
429 查看
题目:http://poj.org/problem?id=1408
题意:
一个1X1的正方形,每条边上有n个不同的点(不包括顶点),并给出它们的坐标。现在把对边相对应的点相连,将正方形分割成(n+1)*(n+1)个小四边形。问最大的四边形的面积是多少。
直接贴代码好了。。。
View Code
题意:
一个1X1的正方形,每条边上有n个不同的点(不包括顶点),并给出它们的坐标。现在把对边相对应的点相连,将正方形分割成(n+1)*(n+1)个小四边形。问最大的四边形的面积是多少。
直接贴代码好了。。。
View Code
#include <iostream> #include<cstdio> #include<cmath> using namespace std; typedef struct node { double x,y; }point; point map[36][36]; int n; double det(double x1,double y1,double x2,double y2) { return x1*y2-x2*y1; } double cross(point a,point b,point c,point d) { return det(b.x-a.x,b.y-a.y,d.x-c.x,d.y-c.y); } point jiaodian(point a,point b,point c,point d) { point h; double area1=cross(a,b,a,c); double area2=cross(a,b,a,d); h.x=(area2*c.x-area1*d.x)/(area2-area1); h.y=(area2*c.y-area1*d.y)/(area2-area1); return h; } double area(point a,point b,point c,point d) { double a2,a1; a1=fabs(0.5*cross(a,b,a,c)); a2=fabs(0.5*cross(a,b,a,d)); return a1+a2; } int main() { while(scanf("%d",&n)!=EOF) { if(n==0) break; int i,j; for(i=1;i<=n;i++) { scanf("%lf",&map[0][i].x); map[0][i].y=0; }//a for(i=1;i<=n;i++) { scanf("%lf",&map[n+1][i].x); map[n+1][i].y=1; }//b for(i=1;i<=n;i++) { scanf("%lf",&map[i][0].y); map[i][0].x=0; }//c for(i=1;i<=n;i++) { scanf("%lf",&map[i][n+1].y); map[i][n+1].x=1; }//d map[0][0].x=map[0][0].y=0; map[n+1][n+1].x=map[n+1][n+1].y=1; map[n+1][0].y=1; map[n+1][0].x=0; map[0][n+1].y=0; map[0][n+1].x=1; for(i=1;i<=n;i++) { point p; for(j=1;j<=n;j++) { p=jiaodian(map[0][j],map[n+1][j],map[i][0],map[i][n+1]); map[i][j]=p; } } /*for(i=0;i<=n+1;i++) { for(j=0;j<=n+1;j++) { printf("(%f,%f) ",map[i][j].x,map[i][j].y); } printf("\n"); }*/ double res=0; for(i=0;i<=n;i++) { for(j=0;j<=n;j++) { double uu; uu=area(map[i][j],map[i+1][j+1],map[i+1][j],map[i][j+1]); if(uu>res) res=uu; } } printf("%.6f\n",res); } return 0; }
相关文章推荐
- poj 1408 Fishnet(计算几何)
- POJ 1408-Fishnet(计算几何-根据交点求多边形面积)
- poj 1408 Fishnet(计算几何 叉积求面积 求两直线交点 暴力)
- ZOJ 1683 Fishnet (POJ 1408)(计算线段交点&叉积求面积)
- poj 1408(计算几何)
- poj 1408(计算几何)
- POJ Fishnet 1408(计算几何)
- POJ 1408 渣渣计算几何
- POJ 1408 Fishnet(几何--叉积求面积 + 求直线的交点坐标)
- poj 1127 Jack Straws(计算几何)
- POJ 2954-Triangle(计算几何+皮克定理)
- [POJ1269]Intersecting Lines(计算几何)
- 计算几何 之 hdu 1077 poj 1981 O(n^2logn)
- POJ 1265 Area (计算几何)(Pick定理)
- poj 2398 Toy Storage(计算几何:叉积)
- 【计算几何】 POJ 1981 Circle and Points
- POJ1113---Wall(基础计算几何:凸包入门)
- poj 2653 Pick-up sticks(计算几何)
- poj 3334 计算几何
- [计算几何]POJ 1556 判断线段相交+Dijkstra