P2521 防線修建

2021-09-24 22:49:53 字數 1203 閱讀 4803

上凸包最好用水平排序做,如果用極角序會很難做。

坑點:set erase乙個元素之後,其他元素的指標不改變。

#include using namespace std;

typedef long long ll;

typedef int lint;

typedef pairpii;

const int maxn = 100001;

const double eps = 1e-12;

const double pi = acos(-1.0);

int sgn(double x)

struct point

point(double _x,double _y)

point operator -(const point &b)const

//叉積

double operator ^(const point &b)const

//點積

double operator *(const point &b)const

//繞原點旋轉角度b(弧度值),後x,y的變化

bool operator <( const point& b )const

};double dist(point a,point b)

int dist2(point a,point b)

const lint maxq = 200005;

pii q[maxq];

lint vis[maxn];

point p[maxn];

double ans[maxq],res;

setse;

void insert( point x )

res += dist( x,*r );

if( l != se.begin() )

}res += dist( *l,x );

se.insert(x);

}int main()

scanf("%d",&q);

for( lint f,x,i = 1;i <= q;i++ )else

}for( lint i = 1;i <= m;i++ )

for( lint i = q;i >= 1;i-- )else

}for( lint i = 1;i <= q;i++ )

return 0;

}

bzoj 2300 防線修建

題意 給出乙個點集,每次可能刪去乙個點或查詢上凸包的面積 保證無重點,保證最左面 最右面的點一定在凸包上 n 100000,m 200000 題解 動態凸包問題,然而這道題的保證簡直極為良心 所以呢,我們就可以用set來水這道題啦 我還是漲了不少姿勢的,比如迭代器居然可以自減 離線所有的操作之後處理...

HAOI2011 防線修建

傳送門 參考部落格 練習s tl stlst l庫。動態維護凸包。由於題目要求乙個乙個刪除,可以考慮反過來離線操作,乙個乙個加回去。當新增加乙個點的時候,往它的左右兩邊擴張 set setse t中按照x xx排好序 看是否需要修改凸包。用叉積判斷即可。注意最開始要加上dis 0,0 x,y dis...

HAOI2011 防線修建

近來a國和b國的矛盾激化,為了預防不測,a國準備修建一條長長的防線,當然修建防線的話,肯定要把需要保護的城市修在防線內部了。可是a國上層現在還猶豫不決,到底該把哪些城市作為保護物件呢?又由於a國的經費有限,所以希望你能幫忙完成如下的乙個任務 給出你所有的a國城市座標 a國上層經過討論,考慮到經濟問題...