#27947: Java避免StackOverFlow


r1cky (hehe)

學校 : 國立臺灣師範大學
編號 : 158637
來源 : [49.216.161.223]
最後登入時間 :
2024-11-11 07:54:54
g554. 周遊列國(Travel) -- TOI練習賽202110潛力組 | From: [114.32.128.128] | 發表日期 : 2021-11-06 20:32

在經過大概20次WA終於過了!!

在寫這題時,要先dfs算scc,但是java在這麼大的遞迴深度會爛掉(C++我不知道,但我猜python也會),所以要這樣寫(以下假設檔名為zjg554):

import java.io.*;

import java.util.*;

public class zjg554 implements Runnable {

//全域變數放這

 

public static void main(String[] args) throws Exception {

new Thread(null, new zjg554(), "", 1<<26).start();//一個讓你容量變大的東西,在cf看到的

}

 

        public void run(){

                //你原本code的主函式

        }

 

       //其他函式如:public void dfs(int x)

        ...

}

再來程式的主要程式是先做scc,然後變成DAG之後記錄每個scc點的in-degree,檢查in-degree如果是0就把他移除、走訪他全部的父節點,並且將所有父節點-1後檢查,如此重複,如果有兩個以上in-degree都是0就是No,另外最後要檢查是不是所有點都走過了

如果不懂怎麼弄scc可以看這個:https://byvoid.com/zht/blog/scc-tarjan/

 
#27958: Re:Java避免StackOverFlow


linlincaleb@gmail.com (臨末之頌)

學校 : 新北市立板橋高級中學
編號 : 132772
來源 : [203.64.161.123]
最後登入時間 :
2024-07-29 10:02:49
g554. 周遊列國(Travel) -- TOI練習賽202110潛力組 | From: [111.248.151.77] | 發表日期 : 2021-11-06 23:58

在經過大概20次WA終於過了!!

在寫這題時,要先dfs算scc,但是java在這麼大的遞迴深度會爛掉(C++我不知道,但我猜python也會),所以要這樣寫(以下假設檔名為zjg554):

import java.io.*;

import java.util.*;

public class zjg554 implements Runnable {

//全域變數放這

 

public static void main(String[] args) throws Exception {

new Thread(null, new zjg554(), "", 1<<26).start();//一個讓你容量變大的東西,在cf看到的

}

 

        public void run(){

                //你原本code的主函式

        }

 

       //其他函式如:public void dfs(int x)

        ...

}

再來程式的主要程式是先做scc,然後變成DAG之後記錄每個scc點的in-degree,檢查in-degree如果是0就把他移除、走訪他全部的父節點,並且將所有父節點-1後檢查,如此重複,如果有兩個以上in-degree都是0就是No,另外最後要檢查是不是所有點都走過了

如果不懂怎麼弄scc可以看這個:https://byvoid.com/zht/blog/scc-tarjan/

只能說Java真的比較辛苦,沒有python好用的函式多,效率又不如C++,記憶體又耗很多(我已經開到最大惹)

 
#27961: Re:Java避免StackOverFlow


r1cky (hehe)

學校 : 國立臺灣師範大學
編號 : 158637
來源 : [49.216.161.223]
最後登入時間 :
2024-11-11 07:54:54
g554. 周遊列國(Travel) -- TOI練習賽202110潛力組 | From: [114.32.128.128] | 發表日期 : 2021-11-07 07:27

只能說Java真的比較辛苦,沒有python好用的函式多,效率又不如C++,記憶體又耗很多(我已經開到最大惹)

 

這似乎是zj預設拿來堆疊的記憶體設定問題,跟你512M的設定不太相關,對於每個語言系統應該都有一個預設極限,只是每個網站系統預設設定可能不太一樣(如果是自己的電腦可以透過另一個方式調整)

 
ZeroJudge Forum