http://poj.org/problem?id=1266

Cover an Arc.
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 823   Accepted: 308

Description

A huge dancing-hall was constructed for the Ural State University's 80-th anniversary celebration. The size of the hall is 2000 * 2000 metres! The floor was made of square mirror plates with side equal to 1 metre. Then the walls were painted with an indelible paint. Unfortunately, in the end the painter flapped the brush and the beautiful mirror floor was stained with the paint. But not everything is lost yet! The stains can be covered with a carpet. 
Nobody knows why, but the paint on the floor formed an arc of a circle (a centre of the circle lies inside the hall). The dean of the Department of Mathematics and Mechanics measured the coordinates of the arc's ends and of some other point of the arc (he is sure that this information is quite enough for any student of the Ural State University). The dean wants to cover the arc with a rectangular carpet. The sides of a carpet must go along the sides of the mirror plates (so, the corners of the carpet must have integer coordinates). 
You should find the minimal square of such a carpet. 

Input

The input consists of six integers. At first the coordinates of the arc's ends are given. The co-ordinates of an inner point of the arc follow them. Absolute value of coordinates doesn't exceed 1000. The points don't belong the same straight line. The arc lies inside the square [-1000,1000] * [-1000,1000].

Output

You should write to the standard output the minimal square of the carpet covering this arc.

Sample Input

476 612
487 615
478 616

Sample Output

66

Source

 
 
 
分析:
几何题, 求正方形覆盖圆弧的面积。
 
 
 
AC代码:
 #include<iostream>
#include<algorithm>
#include<stdio.h>
#define max(a,b) a>b?a:b
#define min(a,b) a>b?b:a
#include<math.h>
using namespace std;
#define eps 1e-8
struct point{double x,y;};
struct line {point a,b;};
point a,b,c;
double xmult(point p1,point p2,point p0){
return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
}
bool pp(point p)
{
double t1,t2;
t1=(xmult(a,c,b));
t2=(xmult(a,p,b));
if ((t1<&&t2<)||(t1>&&t2>)) return true;
return false;
}
double distan (point p1,point p2)
{
return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
}
point inter(line u,line v)
{
point ret = u.a;
double t = ((u.a.x-v.a.x)*(v.a.y-v.b.y)-(u.a.y-v.a.y)*(v.a.x-v.b.x))/((u.a.x-u.b.x)*(v.a.y-v.b.y)-(u.a.y-u.b.y)*(v.a.x-v.b.x));
ret.x +=(u.b.x-u.a.x)*t;
ret.y +=(u.b.y-u.a.y)*t;
return ret;
}
point circle(point a,point b,point c )
{
line u,v;
u.a.x =(a.x+b.x)/;
u.a.y = (a.y+b.y)/;
u.b.x = u.a.x - a.y+b.y;
u.b.y = u.a.y + a.x-b.x;
v.a.x = (a.x+c.x)/;
v.a.y = (a.y+c.y)/;
v.b.x = v.a.x - a.y+c.y;
v.b.y = v.a.y+a.x-c.x;
return inter(u,v);
}
int main()
{
point d,e,p;
int cas =;
while(~scanf("%lf %lf %lf %lf %lf %lf",&a.x,&a.y,&b.x,&b.y,&c.x,&c.y))
{
d = circle(a,b,c);
double bj = distan(d,a);
double maxx,maxy,minx,miny;
double dd=d.x,yy=d.y;
int ax,bx,cx,ay,by,cy;
maxx=max(a.x,b.x);
maxx=max(maxx,c.x);
minx=min(a.x,b.x);
minx=min(minx,c.x);
maxy=max(a.y,b.y);
maxy=max(maxy,c.y);
miny=min(a.y,b.y);
miny=min(miny,c.y);
p.x=d.x-bj;
p.y=d.y;
if(pp(p))
minx=p.x;
p.x=d.x+bj;
if(pp(p))
maxx=p.x;
p.x=d.x;
p.y=d.y-bj;
if(pp(p))
miny=p.y;
p.y=d.y+bj;
if(pp(p))
maxy=p.y;
cx=(long)ceil(maxx-eps)-(long)floor(minx+eps);
cy=(long)ceil(maxy-eps)-(long)floor(miny+eps);
printf("%d\n",cx*cy);
}
return ;
}

最新文章

  1. P1041 传染病控制
  2. dubbo分布式rpc框架用法
  3. java 杂物间 (二) Spring Web
  4. 重构第27天 去除上帝类(Remove God Classes)
  5. THE DRUNK JAILER 分类: POJ 2015-06-10 14:50 13人阅读 评论(0) 收藏
  6. struts2漏洞原理及解决办法
  7. JHipster的安装
  8. jquery”ScriptResourceMapping
  9. Delphi的Owner与Parent可以不一致,而且Owner不是必须存在(一共7个问题) good
  10. C# 数组与集合的区别
  11. unix scp命令(两个unix系统传输文件)
  12. VB6 二维数组去重实现
  13. F4 help for month
  14. intent--Activity之间数据传递之Intent数据传递
  15. 《Mysql 入门很简单》(读后感②)
  16. ALGO-2_蓝桥杯_算法训练_最大最小公倍数
  17. vs2012调试时,抛出异常的等待时间很慢,原来是QQ电脑管家搞的鬼。
  18. ossec安装
  19. MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题 收藏 MySQL中涉及的几个字符集
  20. cogs 2355. [HZOI 2015] 有标号的DAG计数 II

热门文章

  1. Sharepoint+Office Infopath+快速搭建问卷调查系统
  2. 区间dp总结篇
  3. HTML5新的标签和属性
  4. MySQL Cluster搭建与测试
  5. MongoDB 3.X 用户权限控制
  6. Java学习_int和Integer的区别+包装类
  7. Spring MVC:在jsp中引入css
  8. JQuery 实现锚点链接之间的平滑滚动
  9. 分析-eclipse已经导入jar包了,但还是出现classNotFound异常
  10. mvc 学习(一)