• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            oyjpArt ACM/ICPC算法程序設(shè)計空間

            // I am new in programming, welcome to my blog
            I am oyjpart(alpc12, 四城)
            posts - 224, comments - 694, trackbacks - 0, articles - 6

            PKU JudgeOnline FAQ 中文版

            Posted on 2007-11-22 00:27 oyjpart 閱讀(2254) 評論(0)  編輯 收藏 引用 所屬分類: ACM/ICPC或其他比賽
            PKU JudgeOnline FAQ 中文版

                                                                            --oyjpArt

            常見問題解答
            1. 我的程序如何進(jìn)行輸入輸出?
            2. 在線判題系統(tǒng)(以下簡稱POJ)的編譯器是哪些?
            3. 提交的時候可否使用快捷鍵?
            4. 請問提交的程序是如果被判答的?
            5. POJ對提交程序的不同判答的意義?
            6. Special Judge的題目有什么不同?
            7. 如何確定程序讀入的終止?
            8. 為什么我的程序在GCC/G++ (C/C++)下被判成WA/TLE/RE,但是在C/C++ (GCC/G++)下被判成AC?
            9. 有些題目的時間限制是1秒,但是有些程序卻以幾秒的時間AC了?
            10. 我的程序僅僅超過時間限制15MS,我該怎么優(yōu)化程序呢?
            11. 我還有其他問題?
            ________________________________________

            問題: 我的程序如何進(jìn)行輸入輸出?
            解答: 你的程序應(yīng)該始終使用標(biāo)準(zhǔn)輸入(stdin)和標(biāo)準(zhǔn)輸出(stdout).比如,你可以使用scanf(在C/C++編

            譯器下)或者cin(在C++編譯器下)來讀取數(shù)據(jù),使用printf(在C/C++編譯器下)或者cout(在C++編譯器下)

            來輸出答案.用戶提交的程序?qū)⒉辉试S讀/寫文件操作.如果你堅持要這樣做,OJ很可能會返回Runtime

            Error(運(yùn)行時錯誤)或者Wrong Answer(答案錯誤).
            另外還要注意的是在C++下的I/O操作.由于其復(fù)雜的內(nèi)部實現(xiàn)方式,cin和cout相對于scanf和printf來說

            要慢上不少.如果在G++下編譯提交,速度的差異將會愈加明顯.所以如果題目給出的數(shù)據(jù)將有巨大的輸入

            數(shù)據(jù)時,使用cin和cout有可能導(dǎo)致意外的Time Limit Exceed(超時).
            ________________________________________

            問題: 在線判題系統(tǒng)的編譯器是哪些?
            解答: 目前我們使用5個編譯器來支持各種語言的程序提交.C和C++采用的是MS-VC++ 6.0,而對于

            GCC/G++,采用的是MinGW+GCC/G++ 3.4.2. 對于Pascal, 采用的是FreePascal 2.0.0. 對于Java, 采用的

            是JDK 1.5.0.
            下面是1000的正確程序在不同編譯器下的寫法:
             
            C and GCC:
            #include <stdio.h>
             
            int main(void)
            {
                int a, b;
                scanf("%d %d", &a, &b);
                printf("%d\n", a + b);
                return 0;
            }
             
            C++ and G++:
            #include <iostream>
             
            using namespace std;
             
            int main(void)
            {
                int a, b;
                cin >> a >> b;
                cout << a + b << endl;
                return 0;
            }
             
            使用GCC/G++的提醒:
            對于64位整數(shù), long long int 和 __int64 都是支持并且等價的.但是在讀和寫的時候只支持scanf("%

            I64d", ...)和printf("%I64d", ...).
            不支持"%lld"是因為MinGW下的GCC和G++使用的msvcrt.dll動態(tài)鏈接庫并不支持C99標(biāo)準(zhǔn).
            根據(jù)ISO C++標(biāo)準(zhǔn),在G++下,main函數(shù)的返回值必須是int,否則將會導(dǎo)致Compile Error(編譯錯誤)的判答

            .
             
            Pascal:
            Program p1000(Input, Output);
            Var
                a, b: Integer;
             
            Begin
                Readln(a, b);
                Writeln(a + b);
            End.
             
            Java:
            import java.util.*;
             
            public class Main
            {
                public static void main(String args[])
                {
                    Scanner cin = new Scanner(System.in);
                    int a = cin.nextInt(), b = cin.nextInt();
                    System.out.println(a + b);
                }
            }
             
            使用JAVA的提醒:
            Java程序的提交必須使用單個源文件.除了要遵守其他程序提交的規(guī)則之外,使用Java提交的程序還必須

            從一個靜態(tài)的main方法開始執(zhí)行,并讓該main方法置于一個名為Main的類中,否則將會導(dǎo)致Compile

            Error(編譯錯誤)的判答.遵守了上述規(guī)則的情況下,你可以實現(xiàn)和初始化任意需要的類.
            在JDK 1.4下的一個標(biāo)準(zhǔn)程序如下:
            import java.io.*;
            import java.util.*;

            public class Main
            {
                public static void main (String args[]) throws Exception
                {
                    BufferedReader stdin =
                        new BufferedReader(
                            new InputStreamReader(System.in));

                    String line = stdin.readLine();
                    StringTokenizer st = new StringTokenizer(line);
                    int a = Integer.parseInt(st.nextToken());
                    int b = Integer.parseInt(st.nextToken());
                    System.out.println(a + b);
                }
            }
             
            ________________________________________

            問題: 提交的時候可否使用快捷鍵?
            解答: 以下是提交頁面的快捷鍵
            ALT+s 提交
            ALT+u  用戶名域(如果你還沒有登陸)
            ALT+l  編譯語言選項
            ALT+p  提交的題目ID號
            ________________________________________

            問題: 請問提交的程序是如果被判答的?
            解答: POJ首先將你提交的程序存為文件,然后試圖按照你選擇的編譯語言進(jìn)行編譯.如果編譯出現(xiàn)錯誤,

            將會判答Compile Error.然后POJ運(yùn)行您的程序,將輸入數(shù)據(jù)送入程序,并且開始計時(記錄程序的運(yùn)行時

            間).輸入數(shù)據(jù)儲存在一個或多個輸入文件中.每一個文件都會用來判定你的程序并且只使用一次.在程序

            執(zhí)行過程中,如果POJ發(fā)現(xiàn)你的程序的運(yùn)行狀態(tài)符合Runtime Error, Time Limit Exceed, Memory Limit

            Exceed 或者 Output Limit Exceed的標(biāo)準(zhǔn),這些判答就會返回并結(jié)束.這意味著在TLE或者M(jìn)LE的情況下,

            不能確定程序是否能在充裕的硬件和時間條件下得到正確的結(jié)果.當(dāng)你的程序跑完一個輸入文件時,POJ將

            會對你的輸出文件和相應(yīng)標(biāo)準(zhǔn)輸出文件進(jìn)行比較,或者在Speical Judge的題目時進(jìn)行Special Judge.如

            果輸出是不正確的且不滿足Presentation Error,將會給與Wrong Answer判答并結(jié)束.否則POJ將會繼續(xù)進(jìn)

            行下一個輸入文件的運(yùn)行和處理.如果所有的輸入文件都已結(jié)束,如果整個過程中沒有遇到上述的6種錯誤

            但是輸出的符合Presentation Error的條件,將會給與Presentation Error的判答并結(jié)束.否則,恭喜

            您,Accepted將會判答.
            ________________________________________

            問題: POJ對提交程序的不同判答的意義?
            解答: 下面是POJ所有的判答結(jié)果,縮寫,和準(zhǔn)確含義
            Waiting: 你的程序正在被判答或者在等待判答.
             
            Accepted (AC): 恭喜!您順利通過了本題的所有測試數(shù)據(jù)!
             
            Presentation Error (PE): 你的程序的輸出格式和題目所要求的不是完全一致,但是輸出的數(shù)據(jù)是正確

            的.這一般是白字符(空格,tab和/或換行等白字符)的缺少或者多余或者空行的缺少多余所導(dǎo)致的.每行的

            結(jié)尾的空格和輸出的末尾空行不會被判成PE.請仔細(xì)檢查輸出的空格,空行等是否與要求的輸出完全一致.

            Wrong Answer (WA): 你的程序沒有輸出正確的答案。為了簡化判答,如果是Secial Judge的題目,本該

            判Presentation Error的程序也可能返回Wrong Answer.
             
            Runtime Error (RE): 你的程序在執(zhí)行過程中崩潰了. 可能的原因包括:非法文件訪問,棧溢出,數(shù)組越界

            ,浮點(diǎn)異常,除零運(yùn)算等等. 程序長時間不響應(yīng)也可能被認(rèn)為是發(fā)生了Runtime Error.
             
            Time Limit Exceed (TLE): 你的程序運(yùn)行的總時間超過了時間限制.每個題目有2個時間限制,即TOTAL

            TIME LIMIT(總運(yùn)行時間限制)和 CASE TIME LIMIT(一次運(yùn)行時間限制).前者是你的程序運(yùn)行所有的

            輸入文件數(shù)據(jù)的總時間限制,后者則是運(yùn)行單個數(shù)據(jù)輸入文件的限制. 兩者之中只要有一個超時,就會導(dǎo)

            致判答Time Limit Exceed. 如果你的程序被判答Time Limit Exceed,但是并沒有超過總運(yùn)行時間限制,

            那就說明你的程序超過了一次運(yùn)行時間限制.
            如果題目沒有特殊說明CASE TIME LIMIT, 那么將默認(rèn)設(shè)置為與TOTAL TIME LIMIT相同的值,并且不會在

            題目中顯示出來.

            Memory Limit Exceed (MLE): 你的程序使用的最大內(nèi)存超過了內(nèi)存限制.
             
            Output Limit Exceed (OLE): 你的程序的輸出超過了文本輸出大小限制.目前文本輸出大小限制被設(shè)置

            為標(biāo)準(zhǔn)輸出大小的2倍.最主要的原因是你的程序在包含輸出的語句中陷入了無限循環(huán)的錯誤.

            Compile Error (CE): 編譯器在編譯你的程序的時候發(fā)生了錯誤.警告信息不會被認(rèn)為是錯誤.單擊POJ對

            你的程序的判答結(jié)果,可以看到編譯器產(chǎn)生的錯誤和警告信息.
             
            No such problem: 你提交的程序不存在或者不可用.
             
            System Error: 你的程序無法運(yùn)行.舉例:你的程序需要比當(dāng)前硬件條件下的內(nèi)存多得多的空間.
             
            Validate Error: Speical Judge程序無法正確檢驗?zāi)愕妮敵鑫募? 可能是Special Judge程序有錯.如果

            你的程序被判答Validate Error,請盡快通知管理員.(當(dāng)然,這也意味著你的程序很可能是錯誤的).
            ________________________________________

            問題: Special Judge的題目有什么不同?
            解答: 但一個題目可以接受多種正確答案,即有多組解的時候,題目就必須被Special Judge.
            Special Judge程序使用輸入數(shù)據(jù)和一些其他信息來判答你程序的輸出,并將判答結(jié)果返回.

            ________________________________________

            問題: 如何確定程序讀入的終止?
            解答: 大部分情況下,題目會在input中清晰地描敘輸入數(shù)據(jù)如何結(jié)束,比如,test cases的數(shù)目或者一

            行全零的數(shù)據(jù),等等.但是,有時候你必須用EOF結(jié)束符來確認(rèn)文件的結(jié)尾.在這種情況下,你必須檢查

            scanf的返回值(返回有多少個值被成功的讀入或者為0時返回EOF),對于cin,則可以類似的通過 !cin來

            確認(rèn).你可以參考Problem 1001的Hint進(jìn)一步了解如果確定程序讀入的終止.
            ________________________________________

            問題: 為什么我的程序在GCC/G++ (C/C++)下被判成WA/TLE/RE,但是在C/C++ (GCC/G++)下被判成AC?
            解答: 很可能是因為你的程序里的一些微小錯誤在不同編譯器的因素下導(dǎo)致的不同判答。我們建議您仔

            細(xì)檢查您的代碼以找到錯誤。另外一個可能的原因就是不同的編譯器往往使用不用的函數(shù),庫,和設(shè)置

            來生成可執(zhí)行文件。所以在特殊情況下,有可能不同編譯器下生成的可執(zhí)行程序會有不同的執(zhí)行效率或

            者執(zhí)行結(jié)果。比如,MS-VC++的棧的大小比在G++下的棧要大。一個具有很深的遞歸的程序就可能出現(xiàn)暴

            棧的情況。如果你很肯定地認(rèn)為你的程序在不同編譯器下判答的差異是由編譯器造成的,請聯(lián)系我們。
            ________________________________________

            問題: 有些題目的時間限制是1秒,但是有些程序卻以幾秒的時間AC了?
            解答: 大部分這樣的程序是Java程序。眾所周知,Java程序的運(yùn)行速度比C/C++程序要慢很多。所以對于

            Java程序的時間限制也要長于普通時限。確切的說,Java程序允許運(yùn)行的運(yùn)行時限是普通時限的3倍。而

            且給于150MS的多于時間作為I/O速度慢的補(bǔ)償。如果你的程序不滿足上述條件,請聯(lián)系我們。
             
            ________________________________________

            問題: 我的程序僅僅超過時間限制15MS,我該怎么優(yōu)化程序呢?
            解答: 大部分情況下,你的程序?qū)嶋H上需要比時限多較多的時間來運(yùn)行。POJ會在題目的時限到達(dá)的時候

            自動終止你的程序。通常超時的程序會顯示超過時限15MS。一般的優(yōu)化程序技巧包括縮小算法的常數(shù)和

            采用更加有效的算法。
            ________________________________________

            問題: 我還有其他問題?
            解答: 您可以充分利用我們的BBS系統(tǒng)來提問。請您用較和氣的口吻來提問,管理員和其他人都會盡可能

            來幫助你。

            All Rights Reserved 2003-2006 Ying Fuchen,Xu Pengcheng,Xie Di
            Tanslated by oyjpArt
            Any problem, Please Contact Administrator

             

            精品国产乱码久久久久久浪潮| 国产成人久久精品一区二区三区| 精品永久久福利一区二区| 久久精品亚洲精品国产色婷| 精品久久久久久国产| 无码8090精品久久一区| 精品免费久久久久久久| 国产激情久久久久影院小草 | 欧美一级久久久久久久大| 久久人妻AV中文字幕| 色综合色天天久久婷婷基地| 久久天天躁狠狠躁夜夜不卡| 久久97久久97精品免视看| 久久男人Av资源网站无码软件| 色99久久久久高潮综合影院| 亚洲国产精品婷婷久久| 久久精品蜜芽亚洲国产AV| 免费精品国产日韩热久久| 亚洲国产精久久久久久久| 久久亚洲精品中文字幕| 久久久久久久91精品免费观看| 成人精品一区二区久久久| 色综合久久久久网| 精品国产91久久久久久久| 久久国产乱子伦免费精品| 日韩久久久久久中文人妻| 久久SE精品一区二区| 久久99国产精品久久99小说| 久久久久亚洲AV成人网| 久久精品国产一区二区电影| 91久久精品电影| 国产精品无码久久久久| 国内精品久久久久久麻豆| 日本一区精品久久久久影院| 国产精品毛片久久久久久久| 国产69精品久久久久777| 国产精品久久久久久吹潮| avtt天堂网久久精品| 91久久精品91久久性色| 99精品久久久久久久婷婷| 久久一区二区三区99|