一開始用鄰接表加遞迴,總是超限,後來想想,有了父子關係,那麼輸入就是最好的判斷。
判斷類的題目和求結果不一樣,判斷類的題目往往不用費常複雜的無腦運算,而是通過一些過程的比較和標記對flag進行改變,最終的出判斷結果。
就比如我們的程序管理,也是判斷類,通過設定mark陣列,很好的實現了功能,而檔案系統的話,畢竟要求出結果的,那就比較無腦了。
/*
輸入樣例 41
10 3
10 5 3
1 2
1 3
5 1 2 3 4 5
1 3
1 2
2 4
2 5
58 7 6 5 9
1 21 3
2 42 5
輸出樣例
yes
no yes
*/#include using namespace std;
int arr[105];
int main()
int flag=1;
for(int i=0;iarr[b])
}if(flag) printf("yes\n");
else printf("no\n");
} return 0;
}
尋找寶藏
時間限制 1000 ms 記憶體限制 65536 kb special judge
題目描述
有一棵多叉樹t,你在樹根處,寶藏在某一葉子節點l。現在你沿著樹枝向葉子方向走去,從不回頭,如果遇到樹叉節點,你等概率地挑選乙個分支繼續走。請問,在給定t,l的情況下,你有多大概率拿到寶藏?
輸入格式
第一行,整數
n m l
(1< n< 1000,0< m< 1000,0< l< n),分別代表樹t上的節點數、樹枝的個數,寶藏所在節點。樹根為0號結點。然後有m行,每行兩個整數a,b(0≤ a,b< n)代表從節點a到節點b有一條樹枝。可以假設節點a
總是更靠近樹根。
輸出格式
所求的概率,輸出四捨五入到6位小數,然後換行。
輸入樣例
6 5 5
0 11 3
0 22 4
2 5輸出樣例
0.250000
也是利用父子關係,是父親到這個目標節點,每層所有的分支相乘做分母
#include using namespace std;
vectorgraph[1005];
int father[1005];
int main()
;tree son[50];
void preorder(int root)
cout<>t;
while(t--)
preorder(root);
cout<} return 0;
}
大頂堆小頂堆
堆通常是乙個可以被看做一棵完全二叉樹的陣列物件 如果對一棵有n個結點的完全二叉樹的結點按層序編號 從第1層到第 1層,每層從左到右 則對任一結點i 1 i n 有 1 如果i 1,則結點i無雙親,是二叉樹的根 如果i 1,則其雙親是結點。2 如果2i n,則結點i為葉子結點,無左孩子 否則,其左孩子...
堆排(大頂堆,小頂堆)
分類 資料結構 演算法相關 2009 10 15 12 26 2289人閱讀收藏 舉報汗,別人都說大小頂堆只是改改大於號的問題,可我的 從大頂堆只改動大於號調整為小頂堆竟然越界樂,掣肘!後來幾經更改才發現是傳參的問題 見 看來大頂堆改小頂堆不是 亦或是我rp出點問題?搞笑的是 磚頭 c b 竟然對越...
序列 貪心 小頂堆
給定m個序列,每個包含n個非負整數。現在我們可以從每個序列中選擇乙個數字以形成具有m個整數的序列。很明顯,我們一共可以得到nm個這種序列,然後我們可以計算每個序列中的數字之和,並得到nm個值。現在請你求出這些序列和之中最小的n個值。輸入格式 第一行輸入乙個整數t,代表輸入中包含測試用例的數量。接下來...