给出n个点的坐标(坐标均为正数),求最多有多少点能同在一个矩形的边界上。

题解里是构造了这样的几个数组,图中表示的很明白了。

首先枚举两条水平线,然后left[i]表示竖线i左边位于水平线上的点,on[i]表示位于竖线i上两条水平线之间(并不在水平线上)的点数,on2[i]表示位于竖线i上两条水平线之间加上水平线边界上的点数。

所以矩形框上的点数为:

left[j]-left[i]+on[i]+on2[j]

枚举右边界竖线j,j确定后维护on[i]-left[i]的最大值。

 //#define LOCAL
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; const int maxn = + ;
int n, m, y[maxn], on[maxn], on2[maxn], left[maxn]; struct Point
{
int x, y;
bool operator < (const Point& rhs) const
{
return x < rhs.x;
}
}p[maxn]; int solve()
{
sort(p, p + n);
sort(y, y + n);
m = unique(y, y + n) - y; //m为不同y坐标的个数
if(m <= )
return n; int ans = ;
for(int a = ; a < m; ++a)
for(int b = a + ; b < m; ++b)
{
int ymin = y[a], ymax = y[b]; //计算left, on, on2
int k = ; //k记录竖线的条数
for(int i = ; i < n; ++i)
{
if(i == || p[i].x != p[i-].x)
{ //这是一条新的竖线
++k;
on[k] = on2[k] = ;
left[k] = k == ? : left[k-] + on2[k-] - on[k-];
}
if(p[i].y > ymin && p[i].y < ymax)
++on[k];
if(p[i].y >= ymin && p[i].y <= ymax)
++on2[k];
}
if(k <= )
return n; int M = ;
for(int j = ; j <= k; ++j)
{
ans = max(ans, left[j] + on2[j] + M);
M = max(M, on[j] - left[j]);
}
} return ans;
} int main(void)
{
#ifdef LOCAL
freopen("3695in.txt", "r", stdin);
#endif int kase = ;
while(scanf("%d", &n) == && n)
{
for(int i = ; 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 ;
}

代码君

小结:大白书上面的题感觉思路之奇妙,仔细琢磨也不能百分百领会其精髓。一定是我等弱渣太弱了,做题太少了。

LA 3695 Distant Galaxy的更多相关文章

  1. UVa LA 3695 - Distant Galaxy 前缀和,状态拆分,动态规划 难度: 2

    题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...

  2. 【UVALive】3695 Distant Galaxy(......)

    题目 传送门:QWQ 分析 好喵啊~~~~ 不会做 正解看蓝书P53吧 代码 #include <cstdio> #include <algorithm> using name ...

  3. UVALive - 3695 Distant Galaxy

    InputThere are multiple test cases in the input file. Each test case starts with one integer N, (1 ≤ ...

  4. UVaLive 3695 Distant Galaxy (扫描线)

    题意:给平面上的 n 个点,找出一个矩形,使得边界上包含尽量多的点. 析:如果暴力那么就是枚举上下边界,左右边界,还得统计个数,时间复杂度太高,所以我们考虑用扫描线来做,枚举上下边界, 然后用其他方法 ...

  5. hdu Distant Galaxy(遥远的银河)

    Distant Galaxy Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  6. LA3695 Distant Galaxy

    Distant Galaxy https://vjudge.net/problem/UVALive-3695 You are observing a distant galaxy using a te ...

  7. 【poj3141】 Distant Galaxy

    http://poj.org/problem?id=3141 (题目链接) 题意 给出平面上n个点,找出一个矩形,使边界上包含尽量多的点. solution 不难发现,除非所有输入点都在同一行或同一列 ...

  8. uva 1382 - Distant Galaxy

    题目连接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=91208#problem/G 题意:  给出平面上的n个点,找出一个矩形,使得边 ...

  9. 【巧妙预处理系列+离散化处理】【uva1382】Distant Galaxy

    给出平面上的n个点,找一个矩形,使得边界上包含尽量多的点. [输入格式] 输入的第一行为数据组数T.每组数据的第一行为整数n(1≤n≤100):以下n行每行两个整数,即各个点的坐标(坐标均为绝对值不超 ...

随机推荐

  1. Openstack os-networks API create network 方法

    官方文档在请求方法和地址上有错误: http://api.openstack.org/api-ref.html#ext-os-networks 正确的地址为: /v2/{tenant_id}/os-n ...

  2. (转)xmpp 环境配置-支持扩展

    第一种方法直接拖 1> 拖入文件夹 在网盘链接的xmppFramework文件夹 :http://pan.baidu.com/s/1jGxLa3G 也可以直接去github搜索下载. 2> ...

  3. 《Thinking in C++》学习笔记(一)【第二章】

    第二章 对象的创建与使用 2.1语言的翻译过程 翻译器分为两类:解释器(interpreter)和编译器(compiler). 2.1.1解释器 解释器将源代码转化成一些动作(它可由许多机器指令组成) ...

  4. mysql 存储过程事务支持回滚

    如图查看表的属性: InnoDB 支持事务. MyISAM 不支持事务,不过性能更优越.

  5. ExtJs之DHTML,DOM,EXTJS的事件绑定区别

    <!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...

  6. Hadoop InputFormat OutputFormat

    InputFormat有两个抽象方法: getSplits     createRecordReader   InputSplits 将数据按照Split进行切分,一个Split分给一个task执行. ...

  7. Redis 集群实现

    Nosql,作为程序员在当下不了解点儿,还真不行,出去聊起来别人就会说你土.那么就聊聊其中一个比较火的redis.redis单机版没得说,但是一直没有集群版,有也是山寨的.前段时间对redis的实现进 ...

  8. Android核心分析 之九Zygote Service

    Zygote Service 在本章我们会接触到这两个单词: Zygote [生物] 受精卵, 接合子, 接合体 Spawn:产卵 通过这两个单词,我们就可以大体知道Zygote是干什么的了,就是叫老 ...

  9. Java学习笔记之:Java 内部类

    一.介绍 内部类:存在与类中的类就是内部类,一般用于Android开发. 可以把内部类理解成一种继承关系 1.普通内部类 2.局部内部类 3.静态内部类 4.匿名内部类 二.笔记 1.普通内部类 /* ...

  10. android-exploitme(六):基础加密

    这次我们看看程序在设备上存储了什么敏感信息 (server-env)sartre:AndroidLabs2 maxim$ adb shell # cd /data/data/com.securityc ...