生活随笔
收集整理的這篇文章主要介紹了
CF1408D:Searchlights
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
解析
濫用數(shù)據(jù)結(jié)構(gòu)了屬于是
本題的思路和題解還是差不多的
暴力枚舉燈和海盜亂搞即可
但是最后對fif_ifi?的維護(hù)我使用了樹狀數(shù)組,憑空多了個(gè)log…
盡管樹狀數(shù)組跑的飛快
其實(shí)直接倒著掃一遍就行了
特殊數(shù)據(jù)下我這個(gè)算法是可以跑滿n方log1e6的
過2000我在想peach…
還是要多思考
#include<bits/stdc++.h>
using namespace std
;
const int N
=1e6+100;
const int mod
=1e9+7;
double eps
=1e-10;
#define ll long long
ll
read(){ll x
=0,f
=1;char c
=getchar();while(!isdigit(c
)){if(c
=='-')f
=-1;c
=getchar();};while(isdigit(c
)){x
=x
*10+c
-'0';c
=getchar();};return x
*f
;
}int n
,m
;struct point{int x
,y
;
}A
[N
],B
[N
],a
[N
],b
[N
];
int na
,nb
;bool cmp(point a
,point b
){if(a
.x
!=b
.x
) return a
.x
<b
.x
;else return a
.y
<b
.y
;
}int f
[N
],mx
=1e6+2;
inline void add(int p
,int x
){p
++;p
=mx
-p
+1;for(;p
<=mx
;p
+=p
&-p
) f
[p
]=max(f
[p
],x
);return;
}
inline int ask(int p
){p
++;p
=mx
-p
+1;int res(0);for(;p
;p
-=p
&-p
) res
=max(res
,f
[p
]);return res
;
}int main(){#ifndef ONLINE_JUDGE#endifn
=read();m
=read();for(int i
=1;i
<=n
;i
++){A
[i
]=(point
){(int)read(),(int)read()};}for(int i
=1;i
<=m
;i
++){B
[i
]=(point
){(int)read(),(int)read()};}sort(A
+1,A
+1+n
,cmp
);sort(B
+1,B
+1+m
,cmp
);for(int i
=1;i
<=n
;i
++){if(!na
||A
[i
].y
<a
[na
].y
) a
[++na
]=A
[i
];}for(int i
=1;i
<=m
;i
++){while(nb
&&b
[nb
].y
<=B
[i
].y
) nb
--;b
[++nb
]=B
[i
];}n
=na
;m
=nb
;for(int i
=1;i
<=n
;i
++){for(int j
=m
;j
>=1&&b
[j
].x
>=a
[i
].x
;j
--){if(b
[j
].y
>=a
[i
].y
) add(b
[j
].x
-a
[i
].x
,b
[j
].y
-a
[i
].y
+1);}}int ans
=2e9;for(int i
=0;i
<mx
;i
++) ans
=min(ans
,i
+ask(i
));printf("%d\n",ans
);return 0;
}
總結(jié)
以上是生活随笔為你收集整理的CF1408D:Searchlights的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。