UVA 1382 - Distant Galaxy
2014-05-04 13:07
309 查看
#include <cstdio> #include <algorithm> using namespace std; struct Point { int x,y; bool operator < (const Point& a) const{ return x<a.x; } }; const int maxn=100+5; Point p[maxn]; int n,m,y[maxn],on[maxn],on2[maxn],left[maxn]; int solve(){ sort(p,p+n); sort(y,y+n); m=unique(y,y+n)-y; if(m<=2) return n; int ans=0; for(int a=0;a<m;a++){ for(int b=a+1;b<m;b++){ int ymin=y[a],ymax=y[b]; int k=0; for(int i=0;i<n;i++){ if(i==0 || p[i].x !=p[i-1].x){ k++; on[k]=on2[k]=0; left[k]=k==0?0:left[k-1]+on2[k-1]-on[k-1]; } if(p[i].y>ymin && p[i].y<ymax) on[k]++; if(p[i].y>=ymin && p[i].y<=ymax) on2[k]++; } if(k<=2) return n; int M=0; for(int j=1;j<=k;j++){ ans=max(ans,left[j]+on2[j]+M); M=max(M,on[j]-left[j]); } } } return ans; } int main(){ int kase=0; while(scanf("%d",&n)==1 && n){ for(int i=0;i<n;i++){ scanf("%d%d",&p[i].x,&p[i].y); y[i]=p[i].y; } printf("Case %d: %d\n",++kase,solve()); } return 0; }
相关文章推荐
- UVA - 1382 Distant Galaxy
- uva 1382 - Distant Galaxy
- Shanghai 2006 / UVa 1382 Distant Galaxy (枚举&扫描&动态维护)
- uva 1382 Distant Galaxy (枚举)
- uva1382 Distant Galaxy
- uva 1382 - Distant Galaxy(枚举)
- uva 1382 - Distant Galaxy
- 【巧妙预处理系列+离散化处理】【uva1382】Distant Galaxy
- uva 1382 Distant Galaxy (枚举&&扫描&&贪心dp)
- 【巧妙预处理系列+离散化处理】【uva1382】Distant Galaxy
- uva 1382 Distant Galaxy(离散化+枚举技巧)
- UVA 1382 Distant Galaxy(枚举优化)
- UVa 1382 Distant Galaxy 解题报告(枚举 + 前缀和)
- uva 1382 - Distant Galaxy
- uva1382 - Distant Galaxy 部分枚举 递推
- UVa1382--Distant Galaxy(离散化+扫描线)
- UVA 1382 Distant Galaxy
- UVA - 1382 Distant Galaxy
- uva1382 Distant Galaxy
- The queue uvalive 5002 light 1382 uva 12257 (dfs加组合数学)