uva 1382 - Distant Galaxy
题目连接: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。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=;
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 <= ) return n;
int ans = ;
for(int a=;a<m;a++)
{
for(int b=a+;b<m;b++)
{
int k=;
for(int i=;i<n;i++)
{
if(i==||p[i].x!=p[i-].x)
{
k++;
on2[k]=on[k]=;
l[k]=l[k-]+on2[k-]-on[k-];
}
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 <= ) return n;
int M = ;
for(int j = ; j <= k; j++) {
ans = max(ans, l[j]+on2[j]+M);
M = max(M, on[j]-l[j]);
}
}
}
return ans;
}
int main()
{
int kase=;
while(cin>>n&&n)
{
for(int i=;i<n;i++)
{cin>>p[i].x>>p[i].y;
y[i]=p[i].y;
}
printf("Case %d: %d\n",kase++, sove());
} return ;
}
uva 1382 - Distant Galaxy的更多相关文章
- hdu Distant Galaxy(遥远的银河)
Distant Galaxy Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- LA3695 Distant Galaxy
Distant Galaxy https://vjudge.net/problem/UVALive-3695 You are observing a distant galaxy using a te ...
- UVa LA 3695 - Distant Galaxy 前缀和,状态拆分,动态规划 难度: 2
题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...
- uva live 6827 Galaxy collision
就是给出非常多点,要求分成两个集合,在同一个集合里的点要求随意两个之间的距离都大于5. 求一个集合.它的点数目是全部可能答案中最少的. 直接从随意一个点爆搜,把它范围内的点都丢到跟它不一样的集合里.不 ...
- 【poj3141】 Distant Galaxy
http://poj.org/problem?id=3141 (题目链接) 题意 给出平面上n个点,找出一个矩形,使边界上包含尽量多的点. solution 不难发现,除非所有输入点都在同一行或同一列 ...
- LA 3695 Distant Galaxy
给出n个点的坐标(坐标均为正数),求最多有多少点能同在一个矩形的边界上. 题解里是构造了这样的几个数组,图中表示的很明白了. 首先枚举两条水平线,然后left[i]表示竖线i左边位于水平线上的点,on ...
- 【巧妙预处理系列+离散化处理】【uva1382】Distant Galaxy
给出平面上的n个点,找一个矩形,使得边界上包含尽量多的点. [输入格式] 输入的第一行为数据组数T.每组数据的第一行为整数n(1≤n≤100):以下n行每行两个整数,即各个点的坐标(坐标均为绝对值不超 ...
- 【UVALive】3695 Distant Galaxy(......)
题目 传送门:QWQ 分析 好喵啊~~~~ 不会做 正解看蓝书P53吧 代码 #include <cstdio> #include <algorithm> using name ...
- UVALive - 3695 Distant Galaxy
InputThere are multiple test cases in the input file. Each test case starts with one integer N, (1 ≤ ...
随机推荐
- 随机生成字符串-php-js
js <script language="javascript"> function randomString(len) { len = len || 32; var ...
- UI中 frame 与 transform的用法与总结
在iOS中,我们是不可以直接访问控件中frame的结构体的成员的,因此我们需要分三步来改变一个UI控件的位置,大小 一.frame用法 frame的结构体类型为: struct CGRect { CG ...
- 三层+MVC导出Excel(2)
背景: 出门在外,一切以健康为主,学习为辅,健康搞好了,学习也不能拉下,在外工作期间,我们在做数据导出的时候,自己封了一个类,利用NPOI进行数据导出Excel,自我感觉良好,特给大家分享一下,希望对 ...
- 【spring 注解 错误】使用controller 作为后台给前台ajax交互数据出错
controller作为后台与前台的ajax进行交互,后台的方法处理完成返回一个boolean类型的值,想传给前台用来判断是否执行成功,BUT,问题来了: 严重: Servlet.service() ...
- 配置tomcat下war包可以自压缩
<Host name="localhost" appBase="/home/hark/web" unpackWARs="true" a ...
- RxJava 的使用入门
一.什么是 RxJava? RxJava 是一个响应式编程框架,采用观察者设计模式.所以自然少不了 Observable 和 Subscriber 这两个东东了. RxJava 是一个开源项目,地址: ...
- SpringRMI解析2-RmiServiceExporter逻辑脉络
配置文件是Spring的核心,在配置文件中我们可以看到,定义了两个bean,其中一个是对接口实现类的发布,而另一个则是对RMI服务的发布,使用org.springframework.remoting. ...
- 2016.8.14 HTML5重要标签以及属性学习
1.响应网格系统,这使得它很容易把元素放在行,并指定每个元素的相对宽度 . 要注意的是: 在使用网格布局系统之前,要不把布局的元素都添加到同一个<div>中,而且这个<div> ...
- DOM--3 DOM核心和DOM2 HTML(3)
核心Element对象 操作Element对象的属性 为了简化对attributes的处理,Element对象中包含了很多用来操纵Node对象的attributes属性的方法: getAttribut ...
- Swift3.0语言教程使用字符串创建和初始化字符串
Swift3.0语言教程使用字符串创建和初始化字符串 Swift3.0语言教程使用字符串创建和初始化字符串,在编程语言中,字面值是很常见的数据描述形式.人们可以通过字面所表达的意思,获知其含义,尤其是 ...