只能维护加入
删除的话,离线可当作倒着加入
一般用set写,下面是bzoj2300,维护凸壳的长度
void add(P x){ set<P>::iterator l=s.lower_bound(x),r=l,t; l--; if((*r-*l)*(x-*l)<0)return; now-=dis(*r-*l); for(;;){ t=r;r++; if(r==s.end())break; if((x-*t)*(*r-*t)>0)break; now-=dis(*t-*r); s.erase(t); } for(;;){ if(l==s.begin())break; t=l;l--; if((x-*t)*(*l-*t)<0)break; now-=dis(*t-*l); s.erase(t); } s.insert(x); l=r=s.find(x);l--;r++; now+=dis(*l-x)+dis(*r-x); }