不完全動態凸包 SGU277

2022-06-01 11:27:10 字數 3932 閱讀 5859

由於sdoi某題是線段樹套不完全動態凸包,以前沒寫過,所以抱著試試的心態去寫了寫。

(感覺還是蠻好寫的對吧?)

由於不想手寫平衡樹,又因為有乙個二分斜率的東西,所以set要搞乙個開關。

於是寫啊寫,搞了好久,終於對了。

然後悲劇發生了。。。

常數太大,死交不過。尼瑪?根本優化不動。

一怒一下,改成手寫。。。然後悲劇又發生了。。。

還是常數太大,還是死交不過。。。。尼瑪?!!!!

唉。。。

我的做法是分別維護上凸和下凸(兩者只是叉積符號相反)。

set裡按(x,y)公升序排,插入就向前向後維護一下。

set比較煩人的就是begin和end等等判越界的問題。

然後就順手把sgu277 a了。

說明正確性和複雜度還是沒問題的。

1 #include2 #include3 #include

4using

namespace

std;

5#define mp make_pair

6#define x first

7#define y second

8 template inline void read(t&x);

9 typedef long

long

ll;10 typedef pairnode;

11 typedef set

::iterator sit;

1213 ll operator*(node a,node b)

14 node operator-(node a,node b)

15void read(node&a)

16const ll inf=ll(1e18);

17int ca,i;char ch;int f;ll ans[2

];18

sets[2

];19 node now,oo=mp(inf,inf),zero;sit it,pos;node p1,p2;

20#define b s[t].begin()

21#define e s[t].end()

22#define in insert

23#define er erase

24#define up(x,y) x=max(x,y)

25#define k0 (t==0?1:-1)

26#define l(a) ((a)==s[t].begin()?oo:*(pos=a,--pos))

27#define r(a) ((pos=a,++pos)==s[t].end()?oo:*pos)

28#define lb s[t].lower_bound(now)

29#define fi s[t].find(now)

30int xj(node a,node b,node c)//

>0:1 <0:-1 error:0

31#define c(p,k)

34void

ins()

3542}43

44int

main()

4548

return0;

49 }

sgu277

1 #include2 #include3 #include4 #include

5 #include6

using

namespace

std;

7#define mp make_pair

8#define rep(i,x,y) for(i=(x);i<=(y);i++)

9#define _rep(i,x,y) for(i=(x);i>=(y);i--)

10#define rep(i,x,y) for(int i=(x);i<=(y);i++)

11#define _rep(i,x,y) for(int i=(x);i>=(y);i--)

12#define cl(s,x) memset(s,x,sizeof(s))

13#define cp(s1,s2) memcpy(s1,s2,sizeof(s2))

14#define all(x,s) for(x=s.begin();x!=s.end();x++)

15#define max3(a,b,c) max(max(a,b),c)

16 typedef long

long

ll;17 typedef double

ld;18

19 inline char getc()

2021

const

int n=400010;22

const ll inf=ll(1e18);

23const ld eps=1e-6;24

const

int25

int thec=0x7fffffff;26

27int ca,ca0,n,m,i,j,k,l,r;char ch;int

f;ll ans;

2829

#define dc(x) x^=(ans&thec)

30 template inline void read(t&x);

31 template inline void read(t&x,t&y);

3233

struct

node;

34 typedef set

::iterator sit;

35 node u,now,oo=(node);sit it,it1,it2,pos;

36#define b s[t].begin()

37#define e s[t].end()

38#define lb lower_bound

39#define in insert

40#define er erase

41#define up(x,y) x=max(x,y)

4243

bool

operator

44bool

operator==(node a,node b)

45void read(node&a)

46 ll operator*(node a,node b)

47 node operator-(node a,node b);}

48int xj(node a,node b,node c)//

>0:1 <0:-1 error:0

49 ld calc(node a,node b)

50 ll mul(node a,node b)

5152

void p(node a)

53void pl(node a)

5455 vector v[1

<<20

];56

struct

tnode

5770

if((it2=s[t].lb(now))!=b)else now.k=(t==0)?inf:-inf;

71s[t].in(now);72}

73}74void

find()

7582 f=0;83

}84 }t[1

<<20

];85

86void tins(int i,int tx,int ty,int

d)90

void find(int i,int tx,int ty,int l,int

r)93 find(i*2,tx,(tx+ty)/2,l,r);find(i*2+1,(tx+ty)/2+1

,ty,l,r);94}

9596

97int

main()

98110

}111

112 scanf("\n"

);113

return0;

114 }

sdoir1d2_tle

Linux網路截包不完全整理

1 l1層驅動截包法 在驅動中下手應該可以說是最貼近底層的,網絡卡驅動中總有rx接收和xmit傳送函式,引數總是sk buffer,在這裡修改很黃很暴力,而且幾乎不需要什麼linux核心的知識。xmit函式呼叫時的引數sk buffer已經是乙個發育健全的成熟體,因此在這裡做過濾那真是得心應手美呆了...

Linux網路截包不完全整理

網路截包是一項很有意思的課題,可以有資料過濾,防火牆,流量控制,報文篡改等諸多應用,按照核心分層架構將一些截包方法不完全整理如下,歡迎補充。1 l1層驅動截包法 在驅動中下手應該可以說是最貼近底層的,網絡卡驅動中總有rx接收和xmit傳送函式,引數總是sk buffer,在這裡修改很黃很暴力,而且幾...

Fiddler手機抓包不完全記錄

準備工作 1.必須確保安裝fiddler的電腦和手機在同乙個wifi環境下 備註 如果電腦是筆記本當然最好 如果電腦用的是台式電腦,可以安裝乙個隨身wifi,來確保台式電腦和手機在同一wifi環境下 配置步驟 2.配置fiddler 說明 勾上decrypt https traffic,會抓到手機的...