JAVA在寫這題時 不要直接用class建立Node類別 會有很高的機率MLE (個人極限是98% 測資點#48會MLE)
(大概像這樣)
public static class Node{
int parent = -1;
int left = -1;
int right = -1;
int w = 0;
public Node(int n){
w = n;
}
}
因為JAVA在計算空間時,空的物件占用大小就算8byte,儲存引用還要4byte,再算入使用的4個int = 8+4+4*4 = 28byte (其實是32byte 會取8的整數倍,所以會有填充的4byte)
平常在解題目時其實還好 畢竟比較方便 但這題最大的一筆測資 n > 900000,節點數量>1800000,再加上IO以及儲存第3行m個int所需的空間,很容易MLE (記憶體限制64MB)
比起直接用4個長度為n*2的int陣列 多用了近2倍的空間
另外題目的葉結點其實就是貨櫃 因此儲存左節點和右節點的陣列的長度 只需要n即可 可進一步縮減空間
如果遇到TLE 可以使用BufferedReader(搭配split()或是StringTokenizer)/BufferedWriter進行輸入/輸出,時間可以壓到1s內