[几何 LIS] BZOJ 3663 Crazy Rabbit & 4660 Crazy Rabbit & 4206 最大团
2017-04-21 08:24
274 查看
膜一发题解
问题转化为直线上有一些区间,选出尽量多的区间使得它们两两之间”相交但不包含”
考虑最终方案中选出来的所有区间中左端点最小的一个,因为区间两两之间有公共部分所以这个区间内必须包含其他所有区间的左端点.那么我们枚举这个左端点最小的区间,只把其他区间中左端点在这个区间内的区间拿出来,按左端点排序后对右端点跑LIS,就可以保证选出来的区间有公共部分而且不包含.复杂度为O(n2logn).
问题转化为直线上有一些区间,选出尽量多的区间使得它们两两之间”相交但不包含”
考虑最终方案中选出来的所有区间中左端点最小的一个,因为区间两两之间有公共部分所以这个区间内必须包含其他所有区间的左端点.那么我们枚举这个左端点最小的区间,只把其他区间中左端点在这个区间内的区间拿出来,按左端点排序后对右端点跑LIS,就可以保证选出来的区间有公共部分而且不包含.复杂度为O(n2logn).
#include<cstdio> #include<cstdlib> #include<algorithm> #include<cmath> using namespace std; typedef double ld; const ld PI=acos(-1.0); const int N=2005; int n,R; pair<ld,ld> _a ; ld l ,r ; #define read(x) scanf("%d",&(x)) int _n,len; ld a ,c ; inline int LIS(){ if (!_n) return 0; len=0; c[++len]=a[1]; for (int i=2;i<=_n;i++){ if (a[i]>c[len]){ c[++len]=a[i]; continue; } int it=upper_bound(c+1,c+len+1,a[i])-c; c[it]=a[i]; } return len; } int main(){ int x,y; ld d,ang,c; freopen("t.in","r",stdin); freopen("t.out","w",stdout); read(n); read(R); for (int i=1;i<=n;i++){ read(x),read(y); d=sqrt(x*x+y*y),ang=atan2(y,x),c=acos(R/d); ld l=ang-c,r=ang+c; while (l<=-PI) l+=2*PI; while (r>PI) r-=2*PI; if (l>r) swap(l,r); _a[i]=make_pair(l,r); } sort(_a+1,_a+n+1); for (int i=1;i<=n;i++) l[i]=_a[i].first,r[i]=_a[i].second; int ans=0; for (int i=1;i<=n;i++){ _n=0; for (int j=i+1;j<=n;j++) if (l[j]<=r[i] && r[j]>r[i]) a[++_n]=r[j]; ans=max(ans,LIS()+1); } printf("%d\n",ans); return 0; }
相关文章推荐
- [BZOJ4206]最大团(计算几何+dp)
- bzoj3663/4660CrazyRabbit && bzoj4206最大团
- [BZOJ]1069: [SCOI2007]最大土地面积 计算几何
- BZOJ 3532: [Sdoi2014]Lis (最大流)
- BZOJ 4206 转换之后求LIS
- bzoj 4206: 最大团 (DP+几何)
- POJ 1118 Lining Up && POJ 2606 Rabbit hunt 找出一条直线上的点的最大个数
- BZOJ 4206: 最大团
- bzoj 2547: [Ctsc2002]玩具兵 bfs&最大匹配
- bzoj1091 切割多边形 枚举&计算几何
- 【BZOJ 1084】【SCOI 2005】最大子矩阵【DP & 分类讨论】
- [BZOJ 1093 && YZOI1172] Tarjan缩点+拓扑DP 最大半连通子图
- {bzoj2338 [HNOI2011]数矩形 && NBUT 1453 LeBlanc}平面内找最大矩形
- [BZOJ3532][Sdoi2014]Lis && 最小字典序割
- 【BZOJ1069】【SCOI2007】最大土地面积 计算几何 凸包
- 最大权闭合图 && 【BZOJ】1497: [NOI2006]最大获利
- 【计算几何】【二分答案】【最大流】bzoj1822 [JSOI2010]Frozen Nova 冷冻波
- bzoj1093 最大半连通子图 强连通分量&记忆化搜索
- bzoj 1497: [NOI2006]最大获利-----------算法模板[最大权闭合子图]&省选计划系列
- BZOJ 1069 [SCOI2007]最大土地面积 ——计算几何