【bzoj1821】[JSOI2010]Group 部落划分 Group
题目大意:要求把n个点分成m块,使得每一块之间的距离的最小值最大
n^2枚举所有点之间距离
然后sort一下
并查集维护连通关系
一开始e[]开MAXN然后WA了测了4ms,然后开MAXN<<2又WA不过测了24ms,再开MAXN<<5又WA测了68ms
,又开MAXN<<10 TLE了= =,最后MAXN<<8过了。。。(是不是很无聊??)
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std; #define MAXN 10010 struct Node
{
int x,y;
double z;
}e[MAXN<<8]; int k; int n,m;
int ans; int x[MAXN],y[MAXN];
int f[MAXN]; int cmp(Node a,Node b)
{
return a.z<b.z;
} double work(int a,int b)
{
int r1=x[a]-x[b];
int r2=y[a]-y[b];
return sqrt(r1*r1+r2*r2);
} int find(int x)
{
return f[x]==x ? x : f[x]=find(f[x]);
} int main()
{
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++)
f[i]=i;
for (int i=1;i<=n;i++)
scanf("%d%d",&x[i],&y[i]);
for (int i=1;i<n;i++)
for (int j=i+1;j<=n;j++)
{
k++;
e[k].x=i;
e[k].y=j;
e[k].z=work(i,j);
}
sort(e+1,e+k+1,cmp);
for (int i=1;i<=k;i++)
{
int r1=find(e[i].x);
int r2=find(e[i].y);
if (r1==r2)
continue;
if (n==m)
{
printf("%.2lf\n",e[i].z);
break;
}
if (r1>r2)
swap(r1,r2);
f[r1]=r2;
n--;
}
return 0;
}
【bzoj1821】[JSOI2010]Group 部落划分 Group的更多相关文章
- [BZOJ1821][JSOI2010]Group 部落划分 Group 最小生成树 贪心
1821: [JSOI2010]Group 部落划分 Group Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 2943 Solved: 1390[S ...
- [Bzoj1821][JSOI2010]Group 部落划分 Group(并查集)(二分答案)
1821: [JSOI2010]Group 部落划分 Group Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 2949 Solved: 1392[S ...
- 1821: [JSOI2010]Group 部落划分 Group
1821: [JSOI2010]Group 部落划分 Group Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1308 Solved: 627[Su ...
- 洛谷 1821: [JSOI2010]Group 部落划分 Group
1821: [JSOI2010]Group 部落划分 Group Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 2596 Solved: 1221[S ...
- 【最小生成树+贪心】BZOJ1821: [JSOI2010]Group 部落划分 Group
Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成 ...
- 【bzoj1821】[JSOI2010]Group 部落划分 Group Kruskal
题目描述 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成为谜团了——聪 ...
- BZOJ1821 [JSOI2010]Group 部落划分 Group 【最小生成树】
题目 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成为谜团了--聪聪根 ...
- 【BZOJ】1821: [JSOI2010]Group 部落划分 Group(最小生成树+贪心)
http://www.lydsy.com:808/JudgeOnline/problem.php?id=1821 这题裸题. 本题要求最短距离最长,很明显,我们排序. 这里存在贪心,即我们把边权最小的 ...
- 【BZOJ 1821】 [JSOI2010]Group 部落划分 Group
Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成 ...
- [JSOI2010]Group 部落划分 Group
Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 3661 Solved: 1755[Submit][Status][Discuss] Descripti ...
随机推荐
- Nuxt.js使用详解
首先来讲一下服务端渲染 直白的说就是在服务端拿数据进行解析渲染,直接生成html片段返回给前端.具体用法也有很多种比如: 传统的服务端模板引擎渲染整个页面 服务渲染生成htmll代码块, 前端 AJA ...
- CAD得到所有实体1
主要用到函数说明: IMxDrawSelectionSet::AllSelect 得到当前空间的所有实体.详细说明如下: 参数 说明 [in,defaultvalue(NULL)] IMxDrawRe ...
- 00The C Programming Language
The C Programming Language C语言是一门面向过程.抽象化的通用程序设计语言,广泛应用于底层开发.C语言能以简易的方式编译.处理低级存储器.C语言是仅产生少量的机器语言以及不需 ...
- 00Enterprise Resource Planning
Enterprise Resource Planning 企业资源计划即 ERP (Enterprise Resource Planning),由美国 Gartner Group 公司 ...
- 05JavaScript中的事件处理
JavaScript中的事件处理 在JavaScript中,事件的发生主要是由窗口中内容变化.键盘和鼠标引起的.JavaScript在某些事件发生的时候,可以通过一些相应的事件处理器来捕获这些事件,并 ...
- JAVA基础——链表结构之单链表
链表:一种数据存储结构.学链表首先要搞懂数组,按朋友的话说,数组和链表的关系就相当于QQ2008和QQ2009. 除非要通过索引频繁访问各个数据,不然大多数情况下都可以用链表代替数组. 链表部分主要要 ...
- Extjs定时操作
查看api可知: // 启动一个简单的时钟任务,每秒执行一次更新一个 div var task = { run: function(){ Ext.fly('clock').update(new Dat ...
- 洛谷——P1229 遍历问题
P1229 遍历问题 题目描述 我们都很熟悉二叉树的前序.中序.后序遍历,在数据结构中常提出这样的问题:已知一棵二叉树的前序和中序遍历,求它的后序遍历,相应的,已知一棵二叉树的后序遍历和中序遍历序列你 ...
- ubuntu环境搭建DNS服务器
1 安装bind9 apt install bind9 2 修改 named.conf.local,添加要解析的域名及对应的域名配置文件 zone "test.cn"{ type ...
- stall and flow separation on airfoil or blade
stall stall and flow separation Table of Contents 1. Stall and flow separation 1.1. Separation of Bo ...