日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

noip2010提高组3题题解 by rLq

發(fā)布時(shí)間:2023/11/27 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 noip2010提高组3题题解 by rLq 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本題地址http://www.luogu.org/problem/show?pid=1525

關(guān)押罪犯

題目描述

S 城現(xiàn)有兩座監(jiān)獄,一共關(guān)押著N 名罪犯,編號分別為1~N。他們之間的關(guān)系自然也極不和諧。很多罪犯之間甚至積怨已久,如果客觀條件具備則隨時(shí)可能爆發(fā)沖突。我們用“怨氣值”(一個(gè)正整數(shù)值)來表示某兩名罪犯之間的仇恨程度,怨氣值越大,則這兩名罪犯之間的積怨越多。如果兩名怨氣值為c 的罪犯被關(guān)押在同一監(jiān)獄,他們倆之間會發(fā)生摩擦,并造成影響力為c 的沖突事件。

每年年末,警察局會將本年內(nèi)監(jiān)獄中的所有沖突事件按影響力從大到小排成一個(gè)列表,然后上報(bào)到S 城Z 市長那里。公務(wù)繁忙的Z 市長只會去看列表中的第一個(gè)事件的影響力,如果影響很壞,他就會考慮撤換警察局長。

在詳細(xì)考察了N 名罪犯間的矛盾關(guān)系后,警察局長覺得壓力巨大。他準(zhǔn)備將罪犯們在兩座監(jiān)獄內(nèi)重新分配,以求產(chǎn)生的沖突事件影響力都較小,從而保住自己的烏紗帽。假設(shè)只要處于同一監(jiān)獄內(nèi)的某兩個(gè)罪犯間有仇恨,那么他們一定會在每年的某個(gè)時(shí)候發(fā)生摩擦。

那么,應(yīng)如何分配罪犯,才能使Z 市長看到的那個(gè)沖突事件的影響力最小?這個(gè)最小值是多少?

輸入輸出格式

輸入格式:

?

輸入文件的每行中兩個(gè)數(shù)之間用一個(gè)空格隔開。第一行為兩個(gè)正整數(shù)N 和M,分別表示罪犯的數(shù)目以及存在仇恨的罪犯對數(shù)。接下來的M 行每行為三個(gè)正整數(shù)aj,bj,cj,表示aj 號和bj 號罪犯之間存在仇恨,其怨氣值為cj。數(shù)據(jù)保證1<aj=<=bj<=N ,0 < cj≤ 1,000,000,000,且每對罪犯組合只出現(xiàn)一次。

?

輸出格式:

?

共1 行,為Z 市長看到的那個(gè)沖突事件的影響力。如果本年內(nèi)監(jiān)獄中未發(fā)生任何沖突事件,請輸出0。

?

輸入輸出樣例

輸入樣例#1:
4 6
1 4 2534
2 3 3512
1 2 28351
1 3 6618
2 4 1805
3 4 12884
輸出樣例#1:
3512

說明

【輸入輸出樣例說明】罪犯之間的怨氣值如下面左圖所示,右圖所示為罪犯的分配方法,市長看到的沖突事件影響力是3512(由2 號和3 號罪犯引發(fā))。其他任何分法都不會比這個(gè)分法更優(yōu)。

【數(shù)據(jù)范圍】對于30%的數(shù)據(jù)有N≤ 15。對于70%的數(shù)據(jù)有N≤ 2000,M≤ 50000。對于100%的數(shù)據(jù)有N≤ 20000,M≤ 100000。

---------------------------------------分割線菌:我吃飯前寫完就發(fā)車!--------------------------------------------------------

大家都說這道題都用二分,然而都寫的是并查集

把輸入的數(shù)據(jù)看成邊,然后從大到小排序

首先自然想到把有仇恨的人連到一起,發(fā)現(xiàn)連接的祖先相同時(shí)就輸出。然而是錯(cuò)的,錯(cuò)誤顯而易見

比如1 3,2 3,1 4,2 4,模擬一遍當(dāng)然是錯(cuò)的啦(就這也能騙60分)

那么說正解,還是并查集,不過這回是把朋友間連起來

不知道朋友是誰怎么辦呢?可以設(shè)i+n是i的敵人

這樣i,j有仇恨,就可以連i與j+n和j與i+n

判斷仍然是祖先是否相同來輸出

大概就是這樣啦

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<limits.h>
#include<algorithm>
using namespace std;
typedef struct{int a;int b;int ang;
}cri;
cri meb[100001];
int fa[40001],n,m;
int cmp(const cri &a,const cri &b){return a.ang>b.ang;
}
int fnd(int a){return fa[a]==a?a:fnd(fa[a]);
}
int unn(int a,int b){int a1=fnd(fa[a+n]),b1=fnd(fa[b+n]);a=fnd(a);b=fnd(b);if(a==b) return 1;fa[b1]=fa[a];fa[a1]=fa[b];return 0;
}
int main(){memset(meb,0,sizeof(meb));scanf("%d %d",&n,&m);for(int i=1;i<=n;i++){fa[i]=i;fa[i+n]=i+n;}for(int i=1;i<=m;i++){scanf("%d %d %d",&meb[i].a,&meb[i].b,&meb[i].ang);}sort(meb+1,meb+m+1,cmp);for(int i=1;i<=m;i++){if(unn(meb[i].a,meb[i].b)==1){printf("%d",meb[i].ang);return 0;}}printf("0");return 0;
}

已經(jīng)下課啦,所以車就別想嘍

?

轉(zhuǎn)載于:https://www.cnblogs.com/AwesomeOrion/p/5439954.html

總結(jié)

以上是生活随笔為你收集整理的noip2010提高组3题题解 by rLq的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。