poj 3587 The Biggest Cake 正弦定理

题意:

给n个点,求其中3个点构成三角形的最大外接圆半径。

分析:

正弦定理,A/sina=B/sinb=C/sinc=ABC/(2*s)=2*R。

代码:

//poj 3587
//sep9
#include <iostream>
#include <cmath>
using namespace std;
const int maxN=700;
double dis[maxN][maxN];
double x[maxN],y[maxN];

double cross(double x1,double y1,double x2,double y2)
{
	return x1*y2-x2*y1;
}

int main()
{
	int cases;
	scanf("%d",&cases);
	while(cases--){
		int n;
		double ans=0.0;
		scanf("%d",&n);
		for(int i=0;i<n;++i)
			scanf("%lf%lf",&x[i],&y[i]);
		for(int i=0;i<n;++i)
			for(int j=i+1;j<n;++j){
				double dx=x[i]-x[j];
				double dy=y[i]-y[j];
				dis[i][j]=dis[j][i]=sqrt(dx*dx+dy*dy);
			}
		for(int i=0;i<n;++i)
			for(int j=i+1;j<n;++j)
				for(int k=j+1;k<n;++k){
					double t=fabs(cross(x[k]-x[i],y[k]-y[i],x[j]-x[i],y[j]-y[i]));
					ans=max(ans,dis[i][j]*(dis[j][k]/2.0)*(dis[k][i]/t));
				}
		printf("%.3lf\n",ans);
	}
	return 0;
} 
时间: 2024-11-07 09:18:34

poj 3587 The Biggest Cake 正弦定理的相关文章

POJ 3743 LL’s cake(圆+PSLG)

题意是给你一块在原点半径为10的圆,然后告诉你一条直线在圆弧上的极角,相当于用这条直线把这个圆分成两半,然后一共是n条直线切圆,就好比切蛋糕,问你其中最大一块的面积是多少. 如果我们将圆弧转化成直线边,那么这个题就变成PSLG裸题,但是这里是圆弧,所以我们需要将其转化. 我先将所有在圆上的点记录下来,最后极角排序,绕一周,这些点分割出来肯定会有一部分算面积的时候是要算上那部分弓型面积,但是有一部分不是,主要是这部分面积仅仅就是这块弓型面积,没有其他多边形面积,例如样例3,为了避免这种问题,我们可

【转】[专题学习][计算几何]

原文地址:http://www.cnblogs.com/ch3656468/archive/2011/03/02/1969303.html 基本的叉积.点积和凸包等东西就不多说什么了,网上一搜一大堆,切一些题目基本熟悉了就差不多了. 一些基本的题目可以自己搜索,比如这个blog:http://blog.sina.com.cn/s/blog_49c5866c0100f3om.html 接下来,研究了半平面交,思想方法看07年朱泽园的国家队论文,模板代码参考自我校大牛韬哥: http://www.o

15年-ICPC长春-网络赛

ID name status one word    POJ 5437 Alisha’s Party 赛后AC. 优先队列,模拟.对时间t排序 #include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include <queue> using namespace std; struct Node { char name[210]; int v

poj 2515 Birthday Cake

1 /** 2 大意 : 求1^m + 2^m + 3^m + 4^m +....+ n^m 3 解题步骤: 4 先构造从0到m的第1阶差分序列,然后以下所有2---->p阶的差分表. 5 令C[n+1][1]=n,用递推构造C[n+1][1]~C[n+1][p+1]的组合数打个一维表: 6 最后利用C0*C[1]+C1*C[2]+...+Cp*C[p+1]得出答案... 7 注意: java 提交时,一定要将包名去掉,,并且类名为Main 8 这一题就是因为多加了个包名,,一直是 runtim

poj 3014 Cake Pieces and Plates 整数拆分

题意: 将m拆成n个数,允许某个数为0,求拆分方案数. 分析: 裸的整数拆分,设h(m,n)表示将m拆成n个数,允许某数为0的方案数,递推方程见代码.很有意思的是,参考上一篇写poj1221的博文中,设f(m,n)表示将m进行任意份数不允许有0的整数拆分,且最大元素小于等于m的方案数,则h(m,n)==f(m,n)....求解此等式意义... 代码: //poj 3014 //sep9 #include <iostream> using namespace std; const int max

poj 1020 Anniversary Cake(切正方形蛋糕+搜索)

Anniversary Cake Nahid Khaleh decides to invite the kids of the "Shahr-e Ghashang" to her wedding anniversary. She wants to prepare a square-shaped chocolate cake with known size. She asks each invited person to determine the size of the piece o

poj 1020 Anniversary Cake dfs的灵活结构

题意: 给一个目标正方形边长和n个小正方形的边长,问是否可以用这n个小正方形填满目标正方形. 分析: dfs不一开始就定好放入顺序,而是用已放入的个数代表深搜维度. 代码: #include <iostream> using namespace std; int box_size; int n; int size_num[16]; int col[64]; bool dfs(int cnt) { if(cnt==n) return true; int minx=INT_MAX,col_inde

poj 1020 Anniversary Cake (DFS)

出处: http://blog.csdn.net/lyy289065406/article/details/6683250 大致题意: 有一块边长为BoxSize的正方形的大蛋糕,现在给出n块不同尺寸的正方形的小蛋糕的边长,问是否能把大蛋糕按恰好切割为这n块小蛋糕,要求每块小蛋糕必须为整块. 解题思路: 有技巧的DFS 可以把大蛋糕想象为一个蛋糕盒子,然后往里面装小蛋糕. 装蛋糕时遵循以下原则: 自下而上,自左至右: 即先装好盒子底部,再继续往上层装,且装每一层时都靠左边放蛋糕: 大蛋糕优先装,

hdu 5640 King&#39;s Cake(模拟)

Problem Description It is the king's birthday before the military parade . The ministers prepared a rectangle cake of size n×m(1≤n,m≤10000) . The king plans to cut the cake himself. But he has a strange habit of cutting cakes. Each time, he will cut