洛穀 1821: [JSOI2010]Group 部落劃分 Group

來源:互聯網
上載者:User

標籤:協助   居住   for   整數   www.   座標   資訊   分享   bre   

1821: [JSOI2010]Group 部落劃分 GroupTime Limit: 10 Sec  Memory Limit: 64 MB
Submit: 2596  Solved: 1221
[Submit][Status][Discuss]Description

聰聰研究發現,荒島野人總是過著群居的生活,但是,並不是整個荒島上的所有野人都屬於同一個部落,野人們總是拉幫結派形成屬於自己的部落,不同的部落之間則經常發生爭鬥。只是,這一切都成為謎團了——聰聰根本就不知道部落究竟是如何分布的。 不過好訊息是,聰聰得到了一份荒島的地圖。地圖上標註了N個野人居住的地點(可以看作是平面上的座標)。我們知道,同一個部落的野人總是生活在附近。我們把兩個部落的距離,定義為部落中距離最近的那兩個居住點的距離。聰聰還獲得了一個有意義的資訊——這些野人總共被分為了K個部落!這真是個好訊息。聰聰希望從這些資訊裡挖掘出所有部落的詳細資料。他正在嘗試這樣一種演算法: 對於任意一種部落劃分的方法,都能夠求出兩個部落之間的距離,聰聰希望求出一種部落劃分的方法,使靠得最近的兩個部落儘可能遠離。 例如,下面的左圖表示了一個好的劃分,而右圖則不是。請你編程協助聰聰解決這個難題。 

Input第一行包含兩個整數N和K(1< = N < = 1000,1< K < = N),分別代表了野人居住點的數量和部落的數量。接下來N行,每行包含兩個正整數x,y,描述了一個居住點的座標(0 < =x, y < =10000)Output

輸出一行,為最優劃分時,最近的兩個部落的距離,精確到小數點後兩位。

Sample Input4 2
0 0
0 1
1 1
1 0


Sample Output1.00

HINT Source

JSOI2010第二輪Contest1

思路:最小產生樹水題。

錯因:排序方向錯誤。

吐槽:最後的排序排反了,錯失90分~~~~(>_<)~~~~ ,簡直了(╯‵□′)╯︵┻━┻

#include<iostream>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define MAXN 1000001using namespace std;struct nond{    int x,y;    double z;}edge[MAXN];double num[MAXN];int n,k,tot,tot1,x[MAXN],y[MAXN],fa[MAXN];int cmp(nond a,nond b){    return a.z<b.z;}int cmp1(double x,double y){    return x>y;}int find(int x){    if(fa[x]==x)    return x;    else return fa[x]=find(fa[x]);}int main(){    //freopen("people.in","r",stdin);    //freopen("people.out","w",stdout);    scanf("%d%d",&n,&k);    for(int i=1;i<=n;i++)        cin>>x[i]>>y[i];    for(int i=1;i<=n;i++)    fa[i]=i;    for(int i=1;i<=n;i++)        for(int j=i+1;j<=n;j++){            edge[++tot].x=i;            edge[tot].y=j;            edge[tot].z=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));        }    sort(edge+1,edge+1+tot,cmp);    for(int i=1;i<=tot;i++){        int dx=find(edge[i].x);        int dy=find(edge[i].y);        if(dx==dy)    continue;        fa[dx]=dy;        num[++tot1]=edge[i].z;        if(tot1==tot-1)    break;    }    sort(num+1,num+1+tot1,cmp1);    printf("%.2lf",num[k-1]);}

 

 

洛穀 1821: [JSOI2010]Group 部落劃分 Group

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.