point 出處不明

2021-06-29 04:37:30 字數 2183 閱讀 7698

題目大意:給你n個點,m個操作,每個操作有兩個引數k,a把所有滿足y>k/(x^a)的點刪掉,當然每個點只能被刪一次,要求輸出每個點時被哪個操作刪的,如果最後仍沒被刪就-1

,保證所有的數都是正數  x,y,k,a都是實數,不超過10^6

這題因為是y>k/(x^a)比較蛋疼,所以把其化成alnx+lny>lnk,然後就可以整體二分了,每次判讀左一半的操作能否將每個點刪掉,

乙個點被刪掉,就是存在乙個kj,aj使得alnx+lny>lnk,也就是求半平面並,看點是否在其內,但是半平面並不會寫,那就求補集的半平面交,在看點是否在其外就ok了

寫的比較醜

#include#include#include#include#include#include#includeusing namespace std;

const int maxn=100011,maxm=100011;

const double inf=1e8;

const double eps=1e-10;

struct tp

}p[maxn],*wp[maxn];

struct tq

}q[maxm];

struct point

};point operator +(const point &a,const point &b);}

point operator -(const point &a,const point &b);}

point operator *(const point &a,const double &k);}

double operator *(const point &a,const point &b)

struct line

bool check(const point &x)

bool check_(const point &x)

bool operator <(const line &s)const

inline int sgn(double x)

bool check(const point &a,const point &b,const point &c,const point &x)

int n,m;

void init()

void half_plane_intersection(line seg,int n,point p,int &t,int &w)

}while (tif (t+1>=w) return;

p[w]=getpoint(q[t],q[w]);

}void getok(int lp,int rp,int l,int r,bool ok),seg[n].vec=(point);

}seg[++n].p=(point),seg[n].vec=(point);

seg[++n].p=(point),seg[n].vec=(point);

seg[++n].p=(point),seg[n].vec=(point);

seg[++n].p=(point),seg[n].vec=(point);

static point p[maxm]; half_plane_intersection(seg,n,p,t,w); // 求出來的是逆時針 

if (t+1>=w)

for (int i=lp;i<=rp;++i)

int tmp=head-1;

if (tmp<=t || tmp>=w) ok[i]=1;

else ok[i]=!check(p[t],p[tmp],p[tmp+1],x);}}

void solve(int lp,int rp,int l,int r)

int mid=(l+r)>>1; getok(lp,rp,l,mid,ok);

static tp *tmp[maxn]; int cnt=lp-1,res;

for (int i=lp;i<=rp;++i) if (ok[i]) tmp[++cnt]=wp[i]; res=cnt;

for (int i=lp;i<=rp;++i) if (!ok[i]) tmp[++cnt]=wp[i];

for (int i=lp;i<=rp;++i) wp[i]=tmp[i];

solve(lp,res,l,mid); solve(res+1,rp,mid+1,r);

}void work()

int main()

UnicodeDecodeError 不明覺厲

好吧,這個錯誤困擾了我一整天。使用 mysql 資料庫的時候,鏈結的時候 沒有宣告 charset utf8 所以在html試圖向後台post中文字元的時候,報錯了,說 latin 1 codec can t encode byte in position unicodedecodeerror as...

QwtPlotCurve 點(Point)滑鼠移動

因工作需要,要利用滑鼠移動曲線上的資料點,採用的控制項是qwt qwtplot的滑鼠移動操作有點麻煩,費了一下午時間才調通,參考了官方例程 itemeditor 主要的幾個函式是下面的 private bool pressed const qpoint bool moved const qpoint...

Point類的定義

題目 定義乙個point類,用來描述平面上的乙個點.要求支援以point a,b 0,0 等方式完成物件的生成,並定義成員函式move 支援點的移動操作。要求 定義三個點a,b,c,輸入 輸入三個點的座標 輸入第三個點移動到的目標位置 輸出 輸出三個點的座標。並輸出a,b兩點之間的距離。樣例輸入 0...