BZOJ4140 共點圓加強版

2021-09-07 03:59:31 字數 825 閱讀 2545

假設當前詢問點為$(a,b)$,那麼它在乙個以$(x,y)$為圓心的圓裡需要滿足:

$(x-a)^2+(y-b)^2\leq x^2+y^2$

$2ax+2by\geq a^2+b^2$

等價於詢問所有圓心與$(2a,2b)$的點積的最小值是否小於$a^2+b^2$。

考慮將修改操作二進位制分組,分成$o(\log n)$段連續的修改區間,每一段建立上下凸殼維護,查詢時在凸殼上三分。

時間複雜度$o(n\log^2n)$,常數很小。

#include#include#define n 500010

int n,m,op,t,q[30],r1[30],r2[30],flag;double a,b,c,d;

struct pa[n],b[n],q1[n],q2[n];

inline bool cmp1(const p&a,const p&b)

inline double mul(const p&b)

inline void ask1(int l,int r)

r=m2-1;

}else

l=m1+1;}}}

inline void ask2(int l,int r)

r=m2-1;

}else

l=m1+1;}}}

inline void ask()

}int main()

c=a*a+b*b,a+=a,b+=b,ask();

if(flag)puts("no");else puts("yes"),d++;

}} return 0;

}

BZOJ 2564 水管局長加強版

給出乙個n nn個點m mm條邊的無向圖,每個詢問會讓你刪除一條x,y x,yx,y的邊或者是詢問你x,y x,yx,y間路徑最大值的最小值。n q 105 m 1 06,l imit 2500ms n,q leq 10 5,m leq10 6,limit 2500ms n,q 10 5,m 106...

bzoj 2961 共點圓 cdq分治

這道題目資料很弱不保證我的程式完全正確qaq。另外這道題目在2013年集訓隊 中有提到。以下是窩的口胡 對於乙個點 x0,y0 和乙個圓心為 x,y 的圓,顯然當 x0 x 2 y0 y 2 x 2 y 2時點在圓內,化簡得到 2y y0 2x x0 x0 2 y0 2,然後可以把2y0除到右邊去,...

BZOJ2961 共點圓 CDQ分治

bzoj 其實就是推一下圓的式子 長成這個樣子 假設要查詢的點是 x,y 某個圓心是 p,q x p 2 y q 2 leq p 2 q 2 變成 fracp frac leq q 那麼乙個點合法就要對所有圓心都滿足上面這個式子 很明顯拿斜率截就好啦 然後cdq維護上下凸包 附 cdq維護凸包過程 ...