就是给出非常多点,要求分成两个集合,在同一个集合里的点要求随意两个之间的距离都大于5。

求一个集合。它的点数目是全部可能答案中最少的。

直接从随意一个点爆搜,把它范围内的点都丢到跟它不一样的集合里。不断这样搞即可了。

由于可能有非常多相离的远,把每次搜索得到的那个最小的数目加起来就可以。

因为全部点都格点上,所以仅仅须要枚举一个点可以包括的点是否在数据中存在就可以。

当然也能够用一棵树直接去找。这我并不会。。

时间复杂度是81nlogn

湖大的OJ机器太老。。

。还要开栈。

。UVA LIVE随便交就过了。

#include<map>
#include<string>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<queue>
#include<vector>
#include<iostream>
#include<algorithm>
#include<bitset>
#include<climits>
#include<list>
#include<iomanip>
#include<stack>
#include<set>
using namespace std;
struct Point
{
int x,y;
Point(){}
Point(int x,int y)
{
this->x=x;
this->y=y;
}
bool operator <(Point one)const
{
if(x!=one.x)
return x<one.x;
return y<one.y;
}
};
vector<Point>bx;
int dis2(Point one,Point two)
{
return (one.x-two.x)*(one.x-two.x)+(one.y-two.y)*(one.y-two.y);
}
void create()
{
for(int i=-5;i<=5;i++)
for(int j=-5;j<=5;j++)
if(dis2(Point(i,j),Point(0,0))<=25)
bx.push_back(Point(i,j));
}
map<Point,int>mp;
Point cnt;
void dfs(Point v)
{
int n=bx.size(),no=mp[v];
map<Point,int>::iterator it;
for(int i=0;i<n;i++)
{
Point t=Point(v.x+bx[i].x,v.y+bx[i].y);
it=mp.find(t);
if(it!=mp.end()&&it->second==0)
{
if(no==1)
{
it->second=2;
cnt.y++;
}
else
{
it->second=1;
cnt.x++;
}
dfs(t);
}
}
}
int main()
{
//int size = 256 << 20; // 256MB
// char *p = (char*) malloc (size) + size;
// __asm__ ("movl %0, %%esp\n" :: "r" (p) );
create();
int n;
while(scanf("%d",&n)!=EOF)
{
while(n--)
{
Point t;
scanf("%d%d",&t.x,&t.y);
mp[t]=0;
}
map<Point,int>::iterator it;
int ans=0;
for(it=mp.begin();it!=mp.end();it++)
{
if(it->second==0)
{
it->second=1;
cnt.x=1;
cnt.y=0;
dfs(it->first);
if(cnt.x>cnt.y)
swap(cnt.x,cnt.y);
ans+=cnt.x;
}
}
cout<<ans<<endl;
}
return 0;
}

Time Limit: 15000ms, Special Time Limit:37500ms, Memory Limit:65536KB
Total submit users: 9, Accepted users: 6
Problem 13307 : No special judgement
Problem description

The Andromeda galaxy is expected to collide with our Milky Way in about 3.8 billion years. The collision will probably be a merging of the two galaxies, with no two stars actually colliding. That is because the distance between stars in both galaxies is
so huge. Professor Andrew is building a computational model to predict the possible outcomes of the collision and needs your help! A set of points in the two dimensional plane is given, representing stars in a certain region of the already merged galaxies.
He does not know which stars came originally from which galaxy; but he knows that, for this region, if two stars came from the same galaxy, then the distance between them is greater than 5 light years. Since every star in this region comes either from Andromeda
or from the Milky Way, the professor also knows that the given set of points can be separated into two disjoint subsets, one comprising stars from Andromeda and the other one stars from the Milky Way, both subsets with the property that the minimum distance
between two points in the subset is greater than 5 light years. He calls this a good separation, but the bad news is that there may be many different good separations. However, among all possible good separations there is a minimum number of stars a subset
must contain, and this is the number your program has to compute.



Input

The first line contains an integer N (1 ≤ N ≤ 5×10^4) representing the number of points in the set. Each of the next N lines describes a different point with two integers X and Y (1 ≤ X,Y ≤ 5 × 10^5), indicating its coordinates, in light years. There are
no coincident points, and the set admits at least one good separation.

Output

Output a line with an integer representing the minimum number of points a subset may have in a good separation.

Sample Input
Sample input 1
6
1 3
9 1
11 7
5 7
13 5
4 4 Sample input 2
2
10 10
50 30
Sample Output
Sample output 1
2 Sample output 2
0
Problem Source
ICPC Latin American Regional ?

2014

uva live 6827 Galaxy collision的更多相关文章

  1. DFS --- HNU 13307 Galaxy collision

    Galaxy collision Problem's Link Mean: 给定二维坐标平面内的n个整数点,让你把这n个点划分为两个集合,同一集合内的所有点必须两两距离大于5,求这两个集合的元素个数之 ...

  2. uva 1382 - Distant Galaxy

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

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

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

  4. uva 1354 Mobile Computing ——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5

  5. UVA 10564 Paths through the Hourglass[DP 打印]

    UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...

  6. UVA 11404 Palindromic Subsequence[DP LCS 打印]

    UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...

  7. UVA&&POJ离散概率与数学期望入门练习[4]

    POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...

  8. UVA计数方法练习[3]

    UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...

  9. UVA数学入门训练Round1[6]

    UVA - 11388 GCD LCM 题意:输入g和l,找到a和b,gcd(a,b)=g,lacm(a,b)=l,a<b且a最小 g不能整除l时无解,否则一定g,l最小 #include &l ...

随机推荐

  1. PCB Genesis 鼠标滚轮缩放与TGZ拖放 插件实现

    一.背景: 做过CAM的人都用过Geneiss软件,由于处理资料强大,目前奥宝公司出品的Genesis占领整个PCB行业,整个行业无人不知呀, 而此软件有一个吐槽点Genesis 无滚轮缩放与TGZ拖 ...

  2. Discuze修改用户名长度限制

    第一步,在网站 uc_client\model 目录下的 user.php文件中,找到如下代码: ? 1 if($len > 15 || $len < 3 || preg_match(&q ...

  3. windows phone数据网络开发

    LINQ LINQ的全称是Language INtegrated Query,即语言集成查询.LINQ是一种查询语言,不仅可以对数字库进行查询,还可以对.net的数据集.数组.Xml文档等对象进行查询 ...

  4. python--2、数据类型

    字符串 name='jinyudong' 按索引取值.正向取 与 反向取 name['3'] 'y' name['-3'] 'o' 切片(若要使用倒序指定步长为-1),开始或者结束不指定即为到最边上的 ...

  5. Java多线程-synchronized关键字

    进程:是一个正在执行中的程序.每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或者叫一个控制单元. 线程:就是进程中的一个独立的控制单元.线程在控制着进程的执行. 一个进程中至少有一个线程 Ja ...

  6. 查看Oracle数据库表空间大小,是否需要增加表空间的数据文件

    在数据库管理中,磁盘空间不足是DBA都会遇到的问题,问题比较常见. --1查看表空间已经使用的百分比 Sql代码 select a.tablespace_name,a.bytes/1024/1024 ...

  7. php加密方法有哪些

    1. MD5加密 string md5 ( string $str [, bool $raw_output = false ] ) 参数 str -- 原始字符串. raw_output -- 如果可 ...

  8. SQL SERVER2012 安装

  9. raspberry pi树莓派设置

    买了个pi3b 安装系统 需要class10 TF卡.读卡器 下载系统并解压Raspbianhttps://www.raspberrypi.org/downloads/raspbian/访问慢的话请用 ...

  10. (转)Arcgis for Js之鼠标经过显示对象名的实现

    http://blog.csdn.net/gisshixisheng/article/details/41889345 在浏览地图时,移动鼠标经过某个对象或者POI的时候,能够提示该对象的名称对用户来 ...