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的珍珠。需...