POJ 1066 Treasure Hunt

题意:在金字塔内有一个宝藏p(x,y)。现在要取出这个宝藏,在金字塔内有许多面墙,为了进入宝藏所在的位置必须把墙炸开,炸墙只能炸每个房间墙的中点,求将宝藏运出城堡所需要的最小炸墙数。

分析:虽然炸墙只能炸中点,但是因为每个房间里面是空的,而且关心的是最少要炸几面墙,金字塔范围因为只有100*100,所以直接枚举边上的每个点与宝藏的连线,与墙的交点个数最少的直线,就是炸墙的路线。

#include
#include
#include
#include
#include
#include
#include
#include 
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
#define Clear(x) memset(x,0,sizeof(x))
#define fup(i,a,b) for(int i=a;ib;i--)
#define rfdn(i,a,b) for(int i=a;i>=b;i--)
typedef long long ll;
using namespace std;
const double pi=acos(-1.0);
const int maxn = 35;
const double eps = 1e-8;
int n;

struct Point{
    double x,y;
    Point(){}
    Point(double _x,double _y){x=_x;y=_y;}
}trea;

struct Line{
    Point s,e;
    Line(){}
    Line(Point _s,Point _e){s=_s;e=_e;}
}line[maxn];

int sgn(double x)
{
    if(fabs(x)

 

你可能感兴趣的:(计算几何,ACM,POJ,计算几何,线段相交)