#29980: 解題報告


dfd8282@gmail.com (fishhh)

學校 : 嘉義市私立嘉華高級中學
編號 : 99760
來源 : [140.114.59.162]
最後登入時間 :
2024-11-13 00:16:45
a329. 貪婪的Tony -- 2011 成板杯第二題 | From: [36.236.50.14] | 發表日期 : 2022-04-17 21:58

我的做法是紀錄每個點的父節點,只要把input的邏輯反過來就好,這樣就可以得到父節點

詳細實做的話會推薦有vector,這樣方便很多

struct node{
	vector<int> from;
	unsigned long long value;
};
node city[100000]

然後透過遞迴來進行運算,就很像是高一學的計算所有到達終點方法數那樣加就好
至於要如何遞迴,我是覺得很像是DP中的一個經典例子-費氏數列。

int re(int want){ if(want==1){ return 1; } for(int i=0;i<city[want].from.size();i++){ if(city[city[want].from[i]].value==0){ city[want].value+=re(city[want].from[i]); } else{ city[want].value+=city[city[want].from[i]].value; } city[want].value %= 1234567 ; } return city[want].value ; }
 
ZeroJudge Forum