由於sdoi某題是線段樹套不完全動態凸包,以前沒寫過,所以抱著試試的心態去寫了寫。
(感覺還是蠻好寫的對吧?)
由於不想手寫平衡樹,又因為有乙個二分斜率的東西,所以set要搞乙個開關。
於是寫啊寫,搞了好久,終於對了。
然後悲劇發生了。。。
常數太大,死交不過。尼瑪?根本優化不動。
一怒一下,改成手寫。。。然後悲劇又發生了。。。
還是常數太大,還是死交不過。。。。尼瑪?!!!!
唉。。。
我的做法是分別維護上凸和下凸(兩者只是叉積符號相反)。
set裡按(x,y)公升序排,插入就向前向後維護一下。
set比較煩人的就是begin和end等等判越界的問題。
然後就順手把sgu277 a了。
說明正確性和複雜度還是沒問題的。
1 #include2 #include3 #includesgu2774using
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 }
1 #include2 #include3 #include4 #includesdoir1d2_tle5 #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 }
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,會抓到手機的...