BZOJ 2732 射箭(半平面交)

2021-09-07 23:11:56 字數 753 閱讀 2435

題意:給出n條第一象限內的豎直線段。求乙個最大的k,使得某條經過原點的拋物線穿過前k條線段。

思路:設線段為(x,y1,y2),設拋物線為y=ax^2+b^x,那麼有:y1<=ax^2+bx<=y2。據此可得到穿過該線段的拋物線引數a和b的兩個方程,這兩個方程是線性的。因此,可以半平面交,直到半平面內的點構不成多邊形。

struct point

point(double _x,double _y)

point operator+(point a)

point operator-(point a)

double operator*(point a)

point operator*(double t)

point operator/(double t)

};point a[2][n];

int n,cnt[2],pre,cur;

int sgn(double x)

int getdir(point p,point q,point a)

void add(point p)

point cross(point a,point b,point p,point q)

void cut(double k,double b,int isleft)

}int main()

pr(ans);

}

HNOI 2012 射箭 半平面交

description 沫沫最近在玩乙個二維的射箭遊戲,如下圖 1 所示,這個遊戲中的 x 軸在地面,第一象限中有一些豎直線段作為靶子,任意兩個靶子都沒有公共部分,也不會接觸座標軸。沫沫控制乙個位於 0,0 的弓箭手,可以朝 0 至 90?中的任意角度 不包括 0度和 90度 以任意大小的力量射出帶...

BZOJ2618 半平面交)

逆時針給出n個凸多邊形的頂點座標,求它們交的面積。給你n個凸多邊形,求多邊形的交的面積 給你一堆邊,讓你求半平面交的面積 半平面交模板 定義點 struct tpoint 定義線 一點 一方向 struct tline 1.定義半平面為向量的左側 逆時針給出,只需要後乙個減前乙個是方向 2.將所有向...

bzoj 3190 賽車 半平面交

直接寫的裸的半平面交,已經有點背不過模板了。這題卡精度,要用long double esp設1e 20。include include include include include include include define n 20005 define double long double d...