P2319 HNOI2006 超級英雄 題解

2022-05-05 20:39:07 字數 2005 閱讀 2360

現在電視台有一種節目叫做超級英雄,大概的流程就是每位選手到台上回答主持人的幾個問題,然後根據回答問題的多少獲得不同數目的獎品或獎金。主持人問題準備了若干道題目,只有當選手正確回答一道題後,才能進入下一題,否則就被淘汰。為了增加節目的趣味性並適當降低難度,主持人總提供給選手幾個「錦囊妙計」,比如求助現場觀眾,或者去掉若干個錯誤答案(選擇題)等等。

這裡,我們把規則稍微改變一下。假設主持人總共有m道題,選手有n種不同的「錦囊妙計」。主持人規定,每道題都可以從兩種「錦囊妙計」中選擇一種,而每種「錦囊妙計」只能用一次。我們又假設一道題使用了它允許的錦囊妙計後,就一定能正確回答,順利進入下一題。現在我來到了節目現場,可是我實在是太笨了,以至於一道題也不會做,每道題只好借助使用「錦囊妙計」來通過。如果我事先就知道了每道題能夠使用哪兩種「錦囊妙計」,那麼你能告訴我怎樣選擇才能通過最多的題數嗎?

輸入的第一行是兩個正整數 n 和 m (0以下的m行,每行兩個數,分別表示第 m 個問題可以使用的「錦囊妙計」的編號。

注意,每種編號的「錦囊妙計」只能使用一次,同乙個問題的兩個「錦囊妙計」可能一樣。

輸出的第一行為最多能通過的題數 p,接下來 p 行,每行為乙個整數,第 iii 行表示第 iii 題使用的「錦囊妙計的編號」。

如果有多種答案,那麼任意輸出一種,本題使用 special judge 評判答案。

5 63 2

2 00 3

0 43 2

3 2432

04二分圖最大匹配,不過有一些要注意的地方。

做這道題的應該已經掌握了匈牙利演算法了吧,不過不會也沒有關係啦。我們看著**解釋

#include#include#include#includeusing namespace std;

int m;

int n,t;

int x,y;

struct nodeqwq[105050];

int head[105050],tot=0;

bool vis[105050];

int to[105050];

int ans=0;

int ans_end[105050];

inline void add(int x,int y)

兩種情況

1.它沒配對

2.它配對的點可以和別的的點配對

這兩種情況成立,我們就配對上,返回一。

inline bool find(int x)

} }return 0;

}

3.最後就是主函式啦

先是安照題目華麗麗的建邊。在直接跑m遍匈牙利就行了

這裡有兩個坑點。

1.要初始化

2.題目說明「只有當選手正確回答一道題後,才能進入下一題,否則就被淘汰」所以else時就直接break就行qaq

int main()

for(int i=1;i<=m;i++)

else

} cout《完整code

#include#include#include#includeusing namespace std;

int m;

int n,t;

int x,y;

struct nodeqwq[105050];

int head[105050],tot=0;

bool vis[105050];

int to[105050];

int ans=0;

int ans_end[105050];

inline void add(int x,int y)

inline bool find(int x)

} }return 0;

}int main()

for(int i=1;i<=m;i++)

else

} cout

P2319 HNOI2006 超級英雄

題目描述 現在電視台有一種節目叫做超級英雄,大概的流程就是每位選手到台上回答主持人的幾個問題,然後根據回答問題的多少獲得不同數目的獎品或獎金。主持人問題準備了若干道題目,只有當選手正確回答一道題後,才能進入下一題,否則就被淘汰。為了增加節目的趣味性並適當降低難度,主持人總提供給選手幾個 錦囊妙計 比...

洛谷 P2319 HNOI2006 超級英雄

現在電視台有一種節目叫做超級英雄,大概的流程就是每位選手到台上回答主持人的幾個問題,然後根據回答問題的多少獲得不同數目的獎品或獎金。主持人問題準備了若干道題目,只有當選手正確回答一道題後,才能進入下一題,否則就被淘汰。為了增加節目的趣味性並適當降低難度,主持人總提供給選手幾個 錦囊妙計 比如求助現場...

1191 HNOI2006 超級英雄Hero

description 現在電視台有一種節目叫做超級英雄,大概的流程就是每位選手到台上回答主持人的幾個問題,然後根據回答問題的多少獲得不同數目的獎品或獎金。主持人問題準備了若干道題目,只有當選手正確回答一道題後,才能進入下一題,否則就被淘汰。為了增加節目的趣味性並適當降低難度,主持人總提供給選手幾個...