HDU2208唉,可愛的小朋友

2021-09-12 22:14:01 字數 1280 閱讀 7080

sample input

3 22 1 2

2 2 0

2 0 1

sample output

yes具體思路就是:

有m個小皮球和n個小朋友,小朋友是0~n-1號。

1.把每個小皮球看成一組,通過小皮球來進行遞迴遍歷。

2.假設我們成功地把v號小朋友放進1號小皮球組,然後再進入一次dfs,把v+1號小朋友放進1號小皮球組,如果v+1號小朋友不能放進1號小皮球組,就把v+1號小朋友放進2號小皮球組,……,如果前面都失敗了,就退回來,把v號小朋友放進2號小皮球組,直到如果找到了乙個滿足的方式,就返回true,否則如果所有情況都不成立,就返回false。

#include#include#define max 11

int n,m;

bool map[max][max];

int visited[max];//第i號小朋友進的組號

bool check(int v,int tag)//第v號小朋友想進第tag組

} }return false;

} int main()

}}

貼乙個測評資料:

6 23 1 4 5

3 0 2 3

2 1 3

2 1 2

2 0 5

2 0 4

yes再貼乙個我最開始的時候的錯誤寫法,很容易看出,如果按照***的思路,下面的這張圖就會出現這樣的錯誤答案(其中乙個顏色的圈圈代表一組):

int visited[max];//0表示沒有找過,其他數字表示玩第i號球

int tag;//標記目前是第i號球

bool check(int v)

void dfs(int v)

int main()

} int cnt=0;

tag=0;

memset(visited,0,sizeof(visited));

for(int i=0;i

if(visited[i]==0)

if(cnt<=m)

printf("yes\n");

else printf("no\n");

}}

HDU2208唉,可愛的小朋友 (DFS)

input 資料有多個case,每個case先輸入兩個值n 1 n 10 和m 1 m 10 表示有n個小朋友 從0到n 1標號 和m個小皮球。接著有n行,第i行先輸入乙個k 0 koutput 對於每個case,如果老師可以上好課,輸出yes,否則no。sample input 3 22 1 2 ...

暴搜 hdu 2208 唉,可愛的小朋友

題目大意 有n個小朋友,之間有相互喜歡的關係,如果a喜歡b的話,輸入時保證b一定喜歡a。現在有m個小氣球,問能否分成不超過m組,每組不存在有兩個小朋友互相不喜歡。解題思路 因為不具有傳遞性,所以不屬於雙聯通。又n很小,所以直接暴搜。fa i j表示i是屬於j為根的集合。不能用貪心,先把乙個小朋友的滿...

HDU1300 Pearls(可斜率優化)

question 有幾種不同的珍珠。每種珍珠都有它的單價。當然質量高的珍珠 一定也是高的。為了避免買家只買很少的珍珠。就要求不論是買了多少個珍珠都是需要在購買數量上加10.之後乘上單價。求出總的花費!例如 買5個單價是10的珍珠。需要 的花費是 5 10 10 150 買100個單價是20的珍珠。需...