POJ1113 凸包周長計算

2021-06-17 21:44:22 字數 1467 閱讀 3314

題目大意:給出n個點的座標,計算這些點的凸包的周長,但是還需要加上一些距離,因為它規定城牆必須離給定的點(城堡)一定得距離m.

思路:上面說的比較明白了,其實直接套用模板就好了,當然要加上的圓的距離只是乙個圓就好了,這個大家畫個圖就能夠發現,三角形,矩形,加上的都是乙個圓,這個是可以證明的,大家去找規律就好了。 我這裡是用模板算出了所有的點,然後再一條一條的算距離(模板裡沒有……)

ac **:

#include #include #include #include #include #include#include#include #include#define foreach(e,x) for(__typeof(x.begin()) e=x.begin();e!=x.end();++e)

#define rep(i,n) for(int i=0;ieps;

}struct point

point(double _x, double _y) :

x(_x), y(_y)

point operator+(const point&p) const

point operator-(const point&p) const

point operator*(double d) const

point operator/(double d) const

bool operator<(const point&p) const

double dot(const point&p) const

double det(const point&p) const

double alpha() const

double distto(const point&p) const

double alphato(const point&p) const

void read()

double abs()

double abs2()

void write()

};#define cross(p1,p2,p3) ((p2.x-p1.x)*(p3.y-p1.y)-(p3.x-p1.x)*(p2.y-p1.y))

#define crossop(p1,p2,p3) sign(cross(p1,p2,p3))

point isss(point p1, point p2, point q1, point q2) //可求p1,p2 直線與q1,q2的焦點。。不過不確定

vectorconvexhull(vectorps)

for (int i = n - 2, t = qs.size(); i >= 0; qs.push_back(ps[i--]))

qs.pop_back();

return qs;

}int main()

qs=convexhull(ps);

int l=qs.size();

double sum=0;

for(int i=0;i

POJ 1113 凸包周長

題意 國王想建乙個周長最短的城牆,使牆的任意一點到城牆的距離都 大於 rr。求這面牆的周長。題解 凸包 水平序graham掃瞄法 顯然答案就是 凸包的周長 半徑為rr的圓的周長 view code 1 include 2 include 3 include 4 include 5 include 6...

poj1113 求凸包 計算凸包周長

經典的求凸包題,模板題。要求用資源最少,那肯定這個多邊形是個凸多邊形,也就是凸包。所以先求出凸包,計算它的周長。還有就是這道題所說的,要離城牆l遠,其實就是在加上乙個圓的周長,圓的半徑就是l。都說到這了,這道題還差什麼?還差乙個經典的凸包模板!哈哈 如下 include include includ...

凸包計算 POJ1113

題目中除了要計算凸包之外,還要求修理的城牆要和宮殿之間的距離不小於l,那麼也就是相對於宮殿長度之外,多了乙個一l為半徑的圓的距離,所以題目就得以解決 poj1113 include include include include using namespace std typedef long lo...