這道題大一上學期校內天梯選拔的時候遇到過,但是沒有學過資料結構,就是再用迴圈和乙個非常大的二位陣列去做,結果有幾個測試點段錯誤,還有執行超時之類的,得了十幾分後來這道題就沒怎麼看過,現在該上大二了,再看這道題,感覺是真的簡單,直接bfs廣搜一遍就行了。
由於題目保證了每個徒弟只有乙個師傅,這就致使從祖宗往下進行廣度優先搜尋時,bfs的深度就是徒弟的代數,定義乙個level陣列表示第幾層,祖宗的徒弟標記為1,每次出隊時,讓該元素的徒弟的代數=該元素的代數+1,即level[徒弟]=level[師傅]+1;如果bfs過程中遇到了得道者,直接計算它的功力值,即祖宗的功力值代數(1-折扣%)得道倍數;將它加入到sum中這樣這道題就能方便的做出來了
需要注意的一點是,第二個測試點(即測試點1)是祖宗就是得道者的情形,這種情況直接分開分析即可,即if(祖宗是得道者)
**如下:
#include#include#include#includeusing namespace std;
vectorv[100005];
int level[100005];
int getdao[100005];
int main()
for(int i=0;iwhile(!q.empty())
for(int i=0;i}
printf("%d",(int)sum);
}
L2 020 功夫傳人(25 分)
一門武功能否傳承久遠並被發揚光大,是要看緣分的。一般來說,師傅傳授給徒弟的武功總要打個折扣,於是越往後傳,們的功夫就越弱 直到某一支的某一代突然出現乙個天分特別高的 或者是吃到了靈丹 挖到了特別的秘笈 會將功夫的威力一下子放大n倍 我們稱這種 為 得道者 這裡我們來考察某一位祖師爺門下的徒子徒孫家譜...
L2 020 功夫傳人(25 分)
l2 020 功夫傳人 25 分 一門武功能否傳承久遠並被發揚光大,是要看緣分的。一般來說,師傅傳授給徒弟的武功總要打個折扣,於是越往後傳,們的功夫就越弱 直到某一支的某一代突然出現乙個天分特別高的 或者是吃到了靈丹 挖到了特別的秘笈 會將功夫的威力一下子放大n倍 我們稱這種 為 得道者 這裡我們來...
L2 020 功夫傳人 (25 分)
一門武功能否傳承久遠並被發揚光大,是要看緣分的。一般來說,師傅傳授給徒弟的武功總要打個折扣,於是越往後傳,們的功夫就越弱 直到某一支的某一代突然出現乙個天分特別高的 或者是吃到了靈丹 挖到了特別的秘笈 會將功夫的威力一下子放大n倍 我們稱這種 為 得道者 這裡我們來考察某一位祖師爺門下的徒子徒孫家譜...