#38639: 我知道你的 Java MLE 了


liaoweichen1024@gmail.com (M_SQRT)

學校 : 新北市立新莊高級中學
編號 : 195452
來源 : [122.116.111.175]
最後登入時間 :
2024-04-30 21:28:05
a737. 10041 - Vito's family -- UVa10041 | From: [118.166.143.199] | 發表日期 : 2023-12-12 00:15

這題因為輸入檔案太大了,用 Scanner 記憶體會直接炸掉,推薦使用 StreamTokenizer 作為輸入工具。

宣告:
StreamTokenizer st = new StreamTokenizer(new java.io.BufferedReader(new java.io.InputStreamReader(System.in)));

讀入新的資料前,需呼叫函式:
st.nextToken()

若讀到的是整數或浮點數,資料會存於:
st.nval()

若讀到的是字串,資料會存於:
st.sval()


以下程式碼供參考:

import java.io.StreamTokenizer;
import java.io.IOException;
import java.util.Arrays;

public class a737 {
    
    // 將arr宣告在main外面,避免每筆測資都重複配置新的記憶體空間
    static int[] arr = new int[500];
    
    // 因為使用了.io的函式,所以一定要加 throws IOException
    public static void main(String[] args) throws IOException {
        
        // 使用 StreamTokenizer 作為輸入工具
        StreamTokenizer st = new StreamTokenizer(new java.io.BufferedReader(new java.io.InputStreamReader(System.in)));
        
        // 讀取新東西前,要先呼叫 st.nextToken();
        
        // 若讀取到字串,它會存在 st.sval  // String 型別
        // 若讀取到數字,它會存在 st.nval  // double 型別
        
        st.nextToken();
        int n = (int)st.nval;
        
        while(n-- > 0){
        
            st.nextToken();
            int r = (int)st.nval;
            
            for(int i=0; i<r; i++){
                st.nextToken();
                arr[i] = (int)st.nval;
            }
            
            // 給予sort函式排序的範圍
            Arrays.sort(arr, 0, r);
            
            /*
            答案的運算自行處理
            */
            
        }
        
    }
    
}

 
ZeroJudge Forum