国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

羅勇軍 →《算法競(jìng)賽·快沖300題》每日一題:“小球配對(duì)” ← 并查集

這篇具有很好參考價(jià)值的文章主要介紹了羅勇軍 →《算法競(jìng)賽·快沖300題》每日一題:“小球配對(duì)” ← 并查集。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

【題目來(lái)源】
http://oj.ecustacm.cn/problem.php?id=1850
http://oj.ecustacm.cn/viewnews.php?id=1023

【題目描述】
給定 n 個(gè)小球,編號(hào)為
1-n,給定 m 個(gè)籃子,編號(hào)為 1-m。
每個(gè)球只允許放入樣例給定的編號(hào)為 Ai 或者 Bi 的兩個(gè)籃子中的 1 個(gè)。
每個(gè)球必須放入某個(gè)籃子。
如果籃子中球的數(shù)量為奇數(shù),則該籃子是特殊的。
計(jì)算特殊的籃子最少有多少個(gè)。

【輸入格式】
第一行為兩個(gè)正整數(shù) n 和 m,1≤n,m≤200000。表示 n 個(gè)小球,m 個(gè)籃子。
接下來(lái) n 行,每行兩個(gè)數(shù)字 Ai,Bi,表示第 i 個(gè)球可以放入 Ai
或者 Bi 編號(hào)的籃子。
1≤Ai,Bi≤m,Ai≠Bi。

【輸出格式】
輸出一個(gè)數(shù)字表示答案。

【輸入樣例】
4 3
1 2
2 3
1 3
1 2

【輸入樣例】
0

【算法分析】

◆ 異質(zhì)圖
本題本質(zhì)上是異質(zhì)圖問(wèn)題。異質(zhì)圖是一種具有多種節(jié)點(diǎn)類(lèi)型或多種邊類(lèi)型的圖數(shù)據(jù)結(jié)構(gòu),用于刻畫(huà)復(fù)雜異質(zhì)對(duì)象及其交互,具有豐富的語(yǔ)義信息。
本題異質(zhì)圖構(gòu)建的依據(jù)是:將某球放入某個(gè)籃子,則此球與籃子之間就有連線,否則就沒(méi)有連線。
依據(jù)本題樣例,將第 i 個(gè)球放入 Ai
或者 Bi 編號(hào)的籃子中,可得出如下的異質(zhì)圖。其中,從某個(gè)小球引出的兩條線,分別以一實(shí)線和一虛線表示(切記:根據(jù)題意,從某個(gè)小球引出的一實(shí)線和一虛線不能共存,只能取其一。此處都畫(huà)出,只是為了示意)。

羅勇軍 →《算法競(jìng)賽·快沖300題》每日一題:“小球配對(duì)” ← 并查集,信息學(xué)競(jìng)賽,# 并查集,# 圖論,并查集,圖論

根據(jù)“從某個(gè)小球引出的一實(shí)線和一虛線不能共存,只能取其一”的約束,可得出符合本題題意的一種異質(zhì)圖。如下所示。

羅勇軍 →《算法競(jìng)賽·快沖300題》每日一題:“小球配對(duì)” ← 并查集,信息學(xué)競(jìng)賽,# 并查集,# 圖論,并查集,圖論

可見(jiàn),若依據(jù)圖論的觀點(diǎn),上面的示意圖由若干個(gè)連通子圖構(gòu)成。那么問(wèn)題來(lái)了。一個(gè)連通子圖中,最少有多少個(gè)是特殊籃子?顯然,如果連通子圖中的線條是偶數(shù),則特殊籃子最少為0個(gè);如果連通子圖中的線條是奇數(shù),則特殊籃子最少為1個(gè)。
為了求解連通子圖中的特殊籃子數(shù),首選并查集。因?yàn)椋?/span>并查集是求解判定連通子圖相關(guān)問(wèn)題的得力工具。

◆ 并查集
并查集模板:https://blog.csdn.net/hnjzsyjyj/article/details/120147618

int find(int x) {
    if(x!=pre[x]) pre[x]=find(pre[x]);
    return pre[x];
}

void merge(int x,int y) {
    int p=find(x);
    int q=find(y);
    if(p!=q) pre[p]=q;
}

并查集模板題之求團(tuán)伙數(shù)量:https://blog.csdn.net/hnjzsyjyj/article/details/120120591

#include <bits/stdc++.h>
using namespace std;
 
const int maxn=100;
int pre[maxn];
 
int find(int x) { //尋找x的父節(jié)點(diǎn)
    if(x!=pre[x]) pre[x]=find(pre[x]);
    return pre[x];
}
 
void merge(int x,int y) { //合并兩個(gè)子集
    int p=find(x);
    int q=find(y);
    if(p!=q) pre[p]=q;
}
 
int main() {
    int u,v,p,q;
    int ans;
 
    cin>>u>>v; //頂點(diǎn)數(shù)、邊數(shù)
    for(int i=1; i<=u; i++) //初始時(shí)每個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn)都是自己
        pre[i]=i;
 
    for(int i=1; i<=v; i++) {
        cin>>p>>q; //邊的兩個(gè)頂點(diǎn)序號(hào)
        merge(p,q);
    }
 
    for(int i=1; i<=u; i++) {
        if(find(i)==i) ans++; //計(jì)算連通子圖個(gè)數(shù),也就是得出幾個(gè)團(tuán)伙
    }
 
    cout<<ans<<endl;
 
    return 0;
}
 
 
/*
in:
10 9
1 2
3 4
5 2
4 6
2 6
8 7
9 7
1 6
2 4

out:
3
*/

【算法代碼】

#include<bits/stdc++.h>
using namespace std;

const int maxn=2e5+5;
int cnt[maxn],pre[maxn],st[maxn];
int n,m;

int find(int x) {
    if(x!=pre[x]) pre[x]=find(pre[x]);
    return pre[x];
}

void merge(int x,int y) {
    int p=find(x);
    int q=find(y);
    if(p!=q) {
        pre[p]=q;
        cnt[q]+=cnt[p]+1;
    } else cnt[p]++;
}

int main() {
    scanf("%d %d",&n,&m);
    for(int i=1;i<=m;i++) pre[i]=i;
    for(int i=1;i<=n;i++) {
        int x,y;
        scanf("%d %d",&x,&y);
        merge(x,y);
    }

    int ans=0;
    for(int i=1;i<=m;i++) {
        int x=find(i);
        if(!st[x]) {
            if(cnt[x] & 1) ans++;
            st[x]=1;
        }
    }
    printf("%d",ans);

    return 0;
}


/*
in:
4 3
1 2
2 3
1 3
1 2

out:
0
*/




【參考文獻(xiàn)】
https://blog.csdn.net/weixin_43914593/article/details/131800622

https://blog.csdn.net/hnjzsyjyj/article/details/120120591
https://blog.csdn.net/hnjzsyjyj/article/details/120147618



?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-665800.html

到了這里,關(guān)于羅勇軍 →《算法競(jìng)賽·快沖300題》每日一題:“小球配對(duì)” ← 并查集的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 《算法競(jìng)賽·快沖300題》每日一題:“點(diǎn)燈游戲”

    《算法競(jìng)賽·快沖300題》每日一題:“點(diǎn)燈游戲”

    《 算法競(jìng)賽·快沖300題 》將于2024年出版,是《算法競(jìng)賽》的輔助練習(xí)冊(cè)。 所有題目放在自建的OJ New Online Judge。 用C/C++、Java、Python三種語(yǔ)言給出代碼,以中低檔題為主,適合入門(mén)、進(jìn)階。 “ 點(diǎn)燈游戲 ” ,鏈接: http://oj.ecustacm.cn/problem.php?id=1134 【題目描述】 有一個(gè)n*n的燈

    2024年02月08日
    瀏覽(20)
  • 《算法競(jìng)賽·快沖300題》每日一題:“超級(jí)騎士”

    《 算法競(jìng)賽·快沖300題 》將于2024年出版,是《算法競(jìng)賽》的輔助練習(xí)冊(cè)。 所有題目放在自建的OJ New Online Judge。 用C/C++、Java、Python三種語(yǔ)言給出代碼,以中低檔題為主,適合入門(mén)、進(jìn)階。 “ 超級(jí)騎士 ” ,鏈接: http://oj.ecustacm.cn/problem.php?id=1810 【題目描述】 現(xiàn)在在一個(gè)無(wú)

    2024年02月17日
    瀏覽(33)
  • 《算法競(jìng)賽·快沖300題》每日一題:“彩虹數(shù)”

    《 算法競(jìng)賽·快沖300題 》將于2024年出版,是《算法競(jìng)賽》的輔助練習(xí)冊(cè)。 所有題目放在自建的OJ New Online Judge。 用C/C++、Java、Python三種語(yǔ)言給出代碼,以中低檔題為主,適合入門(mén)、進(jìn)階。 “ 彩虹數(shù) ” ,鏈接: http://oj.ecustacm.cn/problem.php?id=1840 【題目描述】 彩虹數(shù):一個(gè)無(wú)

    2024年02月09日
    瀏覽(18)
  • 《算法競(jìng)賽·快沖300題》每日一題:“湊二十四”

    《 算法競(jìng)賽·快沖300題 》將于2024年出版,是《算法競(jìng)賽》的輔助練習(xí)冊(cè)。 所有題目放在自建的OJ New Online Judge。 用C/C++、Java、Python三種語(yǔ)言給出代碼,以中低檔題為主,適合入門(mén)、進(jìn)階。 “ 湊二十四 ” ,鏈接: http://oj.ecustacm.cn/problem.php?id=1793 【題目描述】 給你n個(gè)數(shù)字,

    2024年02月11日
    瀏覽(18)
  • 《算法競(jìng)賽·快沖300題》每日一題:“松鼠與栗子”

    《 算法競(jìng)賽·快沖300題 》將于2024年出版,是《算法競(jìng)賽》的輔助練習(xí)冊(cè)。 所有題目放在自建的OJ New Online Judge。 用C/C++、Java、Python三種語(yǔ)言給出代碼,以中低檔題為主,適合入門(mén)、進(jìn)階。 “ 松鼠與栗子 ” ,鏈接: http://oj.ecustacm.cn/problem.php?id=1852 【題目描述】 現(xiàn)在有m棵栗

    2024年02月11日
    瀏覽(22)
  • 算法|每日一題|H 指數(shù)|二分

    原題地址: 力扣每日一題:H 指數(shù) 給你一個(gè)整數(shù)數(shù)組 citations ,其中 citations[i] 表示研究者的第 i 篇論文被引用的次數(shù)。計(jì)算并返回該研究者的 h 指數(shù)。 根據(jù)維基百科上 h 指數(shù)的定義:h 代表“高引用次數(shù)” ,一名科研人員的 h 指數(shù) 是指他(她)至少發(fā)表了 h 篇論文,并且每

    2024年02月08日
    瀏覽(20)
  • 每日一題之常見(jiàn)的排序算法

    排序是最常用的算法,常見(jiàn)的排序算法有冒泡排序、選擇排序、插入排序、快速排序、希爾排序和歸并排序。除此之外,還有桶排序、堆排序、基數(shù)排序和計(jì)數(shù)排序。 1、冒泡排序 冒泡排序就是把小的元素往前放或大的元素往后放,比較的是相鄰的兩個(gè)元素。 時(shí)間復(fù)雜度:

    2024年02月13日
    瀏覽(20)
  • 算法每日一題:贖金信 | 字符和整數(shù)

    hello,大家好,我是星恒 今天給大家?guī)?lái)的題目是一道簡(jiǎn)單題目,主要幫大家復(fù)習(xí)一下字符串和字符的相關(guān)操作 給你兩個(gè)字符串:ransomNote 和 magazine ,判斷 ransomNote 能不能由 magazine 里面的字符構(gòu)成。 如果可以,返回 true ;否則返回 false 。 magazine 中的每個(gè)字符只能在 ransom

    2024年01月21日
    瀏覽(21)
  • 【迎戰(zhàn)藍(lán)橋】 算法·每日一題(詳解+多解)-- day5

    【迎戰(zhàn)藍(lán)橋】 算法·每日一題(詳解+多解)-- day5

    ??目錄?? ??1. 數(shù)組中出現(xiàn)次數(shù)超過(guò)一半的數(shù)字 ??2.?二進(jìn)制中1的個(gè)數(shù) ??3.?替換空格 【大家好,我是 愛(ài)干飯的猿 ,如果喜歡這篇文章, 點(diǎn)個(gè)贊 ??, 關(guān)注一下吧, 后續(xù)會(huì)一直分享題目與算法思路 】 描述 給一個(gè)長(zhǎng)度為 n 的數(shù)組,數(shù)組中有一個(gè)數(shù)字出現(xiàn)的次數(shù)超過(guò)數(shù)組長(zhǎng)

    2023年04月08日
    瀏覽(21)
  • 算法每日一題: 分割數(shù)組的最大值 | 動(dòng)歸 | 分割數(shù)組 | 貪心+二分

    算法每日一題: 分割數(shù)組的最大值 | 動(dòng)歸 | 分割數(shù)組 | 貪心+二分

    Hello,大家好,我是星恒 嗚嗚嗚,今天給大家?guī)?lái)的又是一道經(jīng)典的動(dòng)歸難題。 題目:leetcode 410 給定一個(gè)非負(fù)整數(shù)數(shù)組 nums 和一個(gè)整數(shù) k ,你需要將這個(gè)數(shù)組分成 k_ 個(gè)非空的連續(xù)子數(shù)組。 設(shè)計(jì)一個(gè)算法使得這 k _個(gè)子數(shù)組各自和的最大值最小。 示例: 示例 1: 示例 2: 示例

    2024年01月22日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包