uva live 6827 Galaxy collision
就是给出非常多点,要求分成两个集合,在同一个集合里的点要求随意两个之间的距离都大于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 |
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 |
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 |
Sample Output |
Sample output 1 |
Problem Source |
ICPC Latin American Regional ?
2014 |
uva live 6827 Galaxy collision的更多相关文章
- DFS --- HNU 13307 Galaxy collision
Galaxy collision Problem's Link Mean: 给定二维坐标平面内的n个整数点,让你把这n个点划分为两个集合,同一集合内的所有点必须两两距离大于5,求这两个集合的元素个数之 ...
- uva 1382 - Distant Galaxy
题目连接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=91208#problem/G 题意: 给出平面上的n个点,找出一个矩形,使得边 ...
- UVa LA 3695 - Distant Galaxy 前缀和,状态拆分,动态规划 难度: 2
题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...
- uva 1354 Mobile Computing ——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5
- UVA 10564 Paths through the Hourglass[DP 打印]
UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...
- UVA 11404 Palindromic Subsequence[DP LCS 打印]
UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...
- UVA&&POJ离散概率与数学期望入门练习[4]
POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...
- UVA计数方法练习[3]
UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...
- 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 ...
随机推荐
- Django 安装步骤
Django的安装和简单使用 -安装: pip3 install django==1.11.9 pycharm 下安装,选择版本号, -使用: 命令创建项目:django-admin startpro ...
- HTML 14 JS事件
一 :什么是事件 发生的某一件事:触发特定的条件,完成某一项功能 二:学习的目的 在特定的条件下,完成特定的功能 条件满足的情况下,系统会自动执行 ( 回调 ) 绑定的方法 学习要点: 1.事件的两种 ...
- Python 29 异常处理, 元类
所学内容 异常处理(常用) AttributeError ·························· 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性xIOError ··· ...
- LocalDateTime查找最近的五分钟点
/** * 最近的五分钟 * @param dateTime * @return */ public static LocalDateTime getNear5(LocalDateTime dateT ...
- 笔记《javascript高级程序设计》 第12章 DOM2和DOM3
DOM2 级核心:在 1 级基础上构建,为节点添加更多方法和属性 DOM2 级视图:为文档定义了基于样式信息的不同视图 DOM2 级事件:说明了如何使用事件和DOM文档交互 DOM2 级样式:如何以编 ...
- python 3:str.upper()与str.lower()(使字符串字母全部大写或小写)
name = "Hello,World! Hello,Python!" print(name.upper()) #字母全部大写 print(name.lower()) #字母全部小 ...
- Php.ini文件位置在哪里 Php.ini文件找不到
转载自:http://www.php100.com/html/php/rumen/2013/0831/26.html [导读] Php ini文件是php的一个配置文件,在windows主机中如果你未 ...
- webapi时间字段返回格式设置及返回model首字母小写
GlobalConfiguration.Configuration.Formatters.Remove(new XmlMediaTypeFormatter()); // 解决json序列化时的循环引用 ...
- 讲究地使用 List
本篇旨意在于讨论List的基本用法,不做全面讲解,仅仅涉及构造函数List.Add.RemoveAt 先看看这几个函数的代码 1.构造函数 static readonly T[] _emptyArra ...
- 使用cnblogs发布第一篇文章,HelloWorld
HelloWorld! 瞅瞅源码的样式,嗯,语法高亮还是可以的,辨识度还是挺高的. <!DOCTYPE html> <html> <head> <meta c ...