hdoj 3229 Distant Galaxyg
来源:互联网 发布:网络推广文案的区别 编辑:程序博客网 时间:2024/04/30 05:35
给出平面上的n个点(n<=100),找一个矩形,使得边界上包含尽量多的点。
对所有的点进行排序,在对纵坐标排序
枚举上界下界a,b;
用left[i]表示竖线左边位于上下边界上的点数(不包括该竖线上的点 ),on[i] 和on2[i],表示竖线上位于上下边界之间的点数(on[i]不统计位于上下边界的点数,而on2[i]要统计)
这样给定左右边界i,j,矩形边界上的点数为left[j]-left[i]+on[i]+on2[j].
当右边界j确定时,on[i]-left[i]应最大。
#include<cstdio>#include<algorithm>using namespace std;struct Point{ int x,y; bool operator < (const Point& rhs) const { return x<rhs.x; }};const int maxn =100+10;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;//所有不同的y坐标的个数 if(m<=2) return n; int ans=0; for(int a=0;a<m;a++) { for(int b=a+1;b<m;b++)//枚举上界下界分别为ymin,ymax; { 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;}
0 0
- hdoj 3229 Distant Galaxyg
- Distant Galaxy
- Distant Galaxy
- POJ-3141-Distant Galaxy
- uva 1382 - Distant Galaxy
- uva 1382 - Distant Galaxy
- POJ--3141--Distant Galaxy
- UVA - 1382 Distant Galaxy
- UVa:1382 Distant Galaxy
- UVA 1382 - Distant Galaxy
- UVA 1382 Distant Galaxy
- poj 3141Distant Galaxy
- uva10085The most distant state
- LA3695 - Distant Galaxy
- UVA - 1382 Distant Galaxy
- poj 3141 Distant Galaxy
- Distant Galaxy(高效)
- 【poj3141】 Distant Galaxy
- 邢台自闭症yiyuan排名
- 树型动态添加
- 微软100题(39)几道网易有道面试题
- UVA 12538 Version Controlled IDE(可持久化treap)
- 邢台自闭症yiyuan哪家好
- hdoj 3229 Distant Galaxyg
- 大数据成就智慧同方亮相第十九届软博会
- Olrace 监听程序配置、配置Net网络服务名
- CCS中GEL文件
- 用CocoaPods做iOS程序的依赖管理
- PHP扩展类ZipArchive简单使用
- 13-建立一个新用户
- 线性时间复杂度求数组中第K大的数
- unity3d中的坑和解决方案