pta l2 20(功夫傳人)

2022-08-21 19:27:16 字數 797 閱讀 2301

題意:給定n個人,編號0~n-1,0為祖先,每個人有乙個師傅,每次從師傅傳功夫到徒弟時,功力值會削弱r,但可能會出現得道者,功力翻n倍,計算所有得道者功力值之和。

思路:因為計算功力值時要從祖先開始逐漸向下計算,所以我們需要儲存每個人的徒弟,然後從上向下遍歷即可,我這裡用的是鄰接表實現的,定義maxn個表頭結點head,head[i]其中包括它的第乙個徒弟編號nxt,翻的倍數,功力值;定義maxn個表結點,指向其兄弟結點。然後用dfs從祖先編號0開始搜即可,但我被兩個細節點卡了乙個多小時,卡到崩潰qaq:1.輸入的r是[0,100]的值,還需除100; 2. 我寫**沒帶腦子,在dfs函式中用全域性變數tmp作為指向徒弟的指標,然後程式一直在那執行錯誤的結果...

ac**:

1 #include2

using

namespace

std;34

const

int maxn=100005;5

struct

nodehead[maxn];910

intn,k,tmp,nxt[maxn];

11double

z,r,sum;

1213

void dfs(int

p)23}24

}

2526

intmain()40}

41 dfs(0

);42 printf("

%lld\n

",(long

long

)sum);

43return0;

44 }

團體程式設計天梯賽PTA L2 020功夫傳人

分析 題意不難理解,看上去就是不太難的題,然後wa了一天qaq 用bfs和並查集應該都能做,然後我沒壓縮好,一會超時一會超記憶體。最後用模擬stack儲存輩分數降低了遞迴的時間複雜度。1 include 2 include3 include4 include5 include6 using name...

天梯賽 功夫傳人

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 一門武功能否傳承久遠並被發揚光大,是要看緣分的。一般來說,師傅傳授給徒弟的武功總要打個折扣,於是越往後傳,們的功夫就越弱 直到某一支的某一代突然出現乙個天分特別高的 或者是吃到了靈丹...

功夫傳人 (25 分)

7 42 功夫傳人 25 分 一門武功能否傳承久遠並被發揚光大,是要看緣分的。一般來說,師傅傳授給徒弟的武功總要打個折扣,於是越往後傳,們的功夫就越弱 直到某一支的某一代突然出現乙個天分特別高的 或者是吃到了靈丹 挖到了特別的秘笈 會將功夫的威力一下子放大n倍 我們稱這種 為 得道者 這裡我們來考察...