uva 1382 - Distant Galaxy
2015-10-30 21:58
295 查看
题目连接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=91208#problem/G
题意: 给出平面上的n个点,找出一个矩形,使得边界上含有尽量多的点;输出最多的点数。
分析:
先枚举上下边界,然后从左到右扫,扫描一遍所有的点,计算l, on, on2数组,枚举右边界,维护on[i] - L[i]的最大值。
其中对于第i列,l[i]表示竖线左边位于上下边界的点数(不包括位于竖线i), on[i]表示竖线上位于上下边界之间的点数(和on2[i]的区别就是on[i]不统计位于上下边界的点数),
所以当给定左右边界i和j的话,矩形边界上的点数为l[j]+on2[j]+on[i]-l[i],当右边界j确定的时候,on[i]-left[i]要最大的;
特别的就是当n个点的横坐标或纵坐标小于等于2种时,那么这种情况ans = n。
题意: 给出平面上的n个点,找出一个矩形,使得边界上含有尽量多的点;输出最多的点数。
分析:
先枚举上下边界,然后从左到右扫,扫描一遍所有的点,计算l, on, on2数组,枚举右边界,维护on[i] - L[i]的最大值。
其中对于第i列,l[i]表示竖线左边位于上下边界的点数(不包括位于竖线i), on[i]表示竖线上位于上下边界之间的点数(和on2[i]的区别就是on[i]不统计位于上下边界的点数),
所以当给定左右边界i和j的话,矩形边界上的点数为l[j]+on2[j]+on[i]-l[i],当右边界j确定的时候,on[i]-left[i]要最大的;
特别的就是当n个点的横坐标或纵坐标小于等于2种时,那么这种情况ans = n。
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int maxn=111; int max(int a,int b) { if(a>b) return a; else return b; } struct Point { int x, y; bool operator< (const Point& cmp) const{ return x < cmp.x; } }p[maxn]; int n,m,y[maxn],on[maxn],on2[maxn],l[maxn]; int sove() { 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++) { int k=0; for(int i=0;i<n;i++) { if(i==0||p[i].x!=p[i-1].x) { k++; on2[k]=on[k]=0; l[k]=l[k-1]+on2[k-1]-on[k-1]; } if(y[a]<=p[i].y&&p[i].y<=y[b]) on2[k]++; if(y[a]<p[i].y&&p[i].y<y[b]) on[k]++; } if(k <= 2) return n; int M = 0; for(int j = 1; j <= k; j++) { ans = max(ans, l[j]+on2[j]+M); M = max(M, on[j]-l[j]); } } } return ans; } int main() { int kase=1; while(cin>>n&&n) { for(int i=0;i<n;i++) {cin>>p[i].x>>p[i].y; y[i]=p[i].y; } printf("Case %d: %d\n",kase++, sove()); } return 0; }
相关文章推荐
- 第二章 Mysql 数据类型简介--(整数类型、浮点数类型和定点数类型,日期与时间类型,字符串类型,二进制类型)
- javascript入门基础
- 梯度下降的理解
- 优化UITableViewCell高度计算的那些事
- Bluemix 修改JDK版本
- 内存溢出导致jenkins自动部署到tomcat失败
- 内存溢出导致jenkins自动部署到tomcat失败
- [C++] advanced reference
- SQL中存储过程和自定义函数的区别(转载)
- VIM操作列表
- 如何合法请Amazon写手为你写Review涨人气
- UESTC 1225 Game Rooms
- .NET和C#概述
- CM12同步源码及编译教程
- IAR Embedded Workbench for 8051 version 9.20 嵌入式系统+S.T.A. DATA 3Muri Pro v10.0.2.1结构分析软件
- Warning: curl_setopt(): CURLOPT_FOLLOWLOCATION cannot be activated when safe经过本人测试修改
- [置顶] Bootstrap导航栏实例讲解
- 虚拟机下32位CentOs版本的linux下hadoop2.4.1集群搭建(3个节点版本)
- poj 2318 暴力+叉积判断
- 用PS制作类似于qq的多边形背景