青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

This blog has been shut down permanently.

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  13 隨筆 :: 0 文章 :: 25 評論 :: 0 Trackbacks

1.輸入輸出

ACM和TopCoder不同,TopCoder只用讓參賽者寫一個class,而ACM需要參賽者完成整個console程序.在TopCoder中,輸入輸出是通過parameter傳遞的,不用過多考慮,在ACM中,卻需要自己編寫.

(1).只有一組輸入時,這種情況不用我說了,都會,但是通常也不會有這么水的題

(2).固定組數的輸入,可以利用一個計數器和while語句完成,

01 #include <iostream>
02
03 int main(void){
04     int n;
05     scanf("%d", &n);
06     while (n--){
07         //...
08     }
09     //...
10     return 0;
11 }

(3).測試數據結尾有標志字符(例如最后一組輸入后給一個0),這個只用加一個if語句判斷讀入的數據是什么,是結束標志跳出就ok了.也不多說了

(4).題目沒有告訴你有多少組數據,這個通常是最令新手疑惑的,這種情況,一般用文件結束標志EOF判斷

01 #include <iostream>
02
03 int main(void){
04     int n;
05     while (scanf("%d", &n) != EOF){
06     //...
07     }
08     //...
09     return 0;
10 }

其實這里也可以用c++的cin輸入流判斷,例如

01 #include <iostream>
02
03 using namespace std;
04
05 int main(void){
06     int n;
07     while (cin>>n){
08     //...
09     }
10     //...
11     return 0;
12 }

但是這樣不是特別好,為什么?下面會說.

對于輸出,最好采用的接收一組數據,處理一組數據,把結果保存在一個緩沖數組中,待所有輸入結束后,再一起輸出,而不是待接收完所有輸入后,再處理,再輸出,這樣會消耗更多的memory,而且會更慢.

2.關于效率

第一,上面的所有例子,均采用的c標準I/O,為什么不用c++的cin,cout呢?是有原因的,經實踐,在大規模輸入輸出下,cin,cout效率遠遠低于scanf()和printf(),原因據我估計應該是以為scanf(),printf()是匯編寫的(這點可以從這兩個函數均可以接受任意多組parameter(s)看出,c/c++函數是不具備這樣的性質的),而cin,cout均是直接c/c++寫的流操作,本來c/c++就比匯編慢,還引入流,所以自然比scanf(),printf()慢了.因此,在輸入輸出數據量很小的情況下,出于方便的原因,可以采用cin,cout,而在輸入輸出數據量比較大的情況下用scanf(),printf()比較保險,避免超時.

第二.ACM中,除了c/c++,一般還支持java等語言,但是由于java是解釋執行的,效率十分低下,為此,一般的JudgeOnline都把java的time limit設置為題目給定值(也就是c/c++的time limit)的三倍,而且給每一組輸入再額外提供150ms.即使是這樣,java遇上復雜或者高精度計算的題目,還是很容易超時,因為效率有時候還遠遠未到c/c++的1/3.因此,一般來說,除了個別java極其有利的情況(例如字符串處理),不建議使用java.

3.關于所得結果的解釋

下面是一般JudgeOnline系統所有可能產生的結果,如果對返回的結果不明,看看解釋吧

Waiting: Your program is being judged or waiting to be judged.

Accepted (AC): Congratulations! Your program has produced the correct output!

Presentation Error (PE): Your program's output format is not exactly the same as required by the problem, although the output is correct. This usually means the existence of omitted or extra blank characters (white spaces, tab characters and/or new line characters) between any two non-blank characters, and/or blank lines (a line consisting of only blank characters) between any two non-blank lines. Trailing blank characters at the end of each line and trailing blank lines at the of output are not considered format errors. Check the output for spaces, blank lines, etc. against the problem's output specification.

Wrong Answer (WA): Your program does not produce the correct output. Special judge programs will possibly return Wrong Answer in place of Presentation Error for simplicity and robustness.

Runtime Error (RE): Your program has failed during the execution. Possible causes include illegal file access, stack overflow, out of range in pointer reference, floating point exception, division by zero and many others. Programs that stay not responding for a long time (not consuming CPU cycles) may also be considered to have encountered runtime errors.

Time Limit Exceed (TLE): The total time your program has run for has exceeded the limit.

Each problem has two time limits - TOTAL TIME LIMIT and CASE TIME LIMIT. The former is the total time allowed for your program to deal with all input files. And the latter is the total time allowed for your program to deal with a single input file. Exceeding either one will lead to Time Limit Exceed. If you get Time Limit Exceed but find that your program has run for less time than is limited, your program must have exceeded that CASE TIME LIMIT.

Problems without a special demand on the time limit for a single input file will have its case time limit is trivially set as the same as its total time limit and the phrase "Case Time Limit" will not show up under the problem title.

Memory Limit Exceed (MLE): The maximum amount of memory that your program has used has exceeded the limit.

Output Limit Exceed (OLE): Your program has produced too much output. Currently the limit is twice the size of the file containing the expected output. The most common cause of this result is that your programs falls into an infinite loop containing some output operations.

Compile Error (CE): The compiler fails to compile your program. Warning messages are not considered errors. Click on the judge's reply to see the warning and error messages produced by the compiler.

No such problem: Either you have submitted with a non-existent problem id or the problem is currently unavailable (probably reserved for upcoming contests).

System Error: The judge cannot run your program. One example is that your program requires much more memory than hardware limitation.

Validate Error: The special judge program fails in checking your output, which means it may contain some bugs. If you get this result, please contact the administrator. (Of course, this also means your output is probably wrong).

posted on 2009-11-11 00:43 iZ 閱讀(1866) 評論(11)  編輯 收藏 引用

評論

# re: [轉載]ACM技巧——for amateur only 2009-11-11 03:17 OwnWaterloo
"經實踐,在大規模輸入輸出下,cin,cout效率遠遠低于scanf()和printf()"
遠遠低于? 太夸張了……
野蠻人拿到打火機可能也會抱怨"還不如我的木頭"。

看看這個:
http://acm.pku.edu.cn/JudgeOnline/problemstatus?problem_id=2602

第1個uther的,就是用C++ iostream做的。

  回復  更多評論
  

# re: [轉載]ACM技巧——for amateur only 2009-11-11 19:16 iSsay
@OwnWaterloo
uther只是預處理包含了流處理的定義,但是他有沒有調用cin/cout那我就不知道了。  回復  更多評論
  

# re: [轉載]ACM技巧——for amateur only 2009-11-11 19:19 iSsay
@OwnWaterloo
換句話說,說不定他預先包含的是iostream,里面用的都是匯編代碼呢
:-)  回復  更多評論
  

# re: [轉載]ACM技巧——for amateur only 2009-11-11 20:30 OwnWaterloo
@iSsay
少扯了,uther是我臨時注冊的馬甲。

  回復  更多評論
  

# re: [轉載]ACM技巧——for amateur only 2009-11-11 21:12 iSsay
@OwnWaterloo
我有眼不識泰山,大牛啊,能看看你的代碼嗎?  回復  更多評論
  

# re: [轉載]ACM技巧——for amateur only 2009-11-11 21:26 OwnWaterloo
@iSsay
就事論事而已,我不是大牛,pku上就沒過幾道題。
代碼里面有很多速度測試的代碼,所以很長。

其實是用istream::read 一次讀完所有輸入到buf。
將buf[0],buf[2],buf[4], ... 看作a
將buf[1],buf[3],buf[5], ... 看作b
然后高精度加高精度。
加法時沒有沒有轉換到0-9 直接用'0'-'9'計算,輸出時也省去了另一次轉換,直接輸出一個字符串。

  回復  更多評論
  

# re: [轉載]ACM技巧——for amateur only 2009-11-11 23:02 iSsay
你有沒有試過,用測速代碼測試iostream,和標準IO的效率?  回復  更多評論
  

# re: [轉載]ACM技巧——for amateur only 2009-11-11 23:05 OwnWaterloo
@iSsay
標準IO?cin,cout,cerr,clog不就是標準IO么?

你指的是formatted io?

  回復  更多評論
  

# re: [轉載]ACM技巧——for amateur only 2009-11-12 00:08 OwnWaterloo
@iSsay
這個嘛,你去測吧,嘿嘿。


做2602的背景是這樣的:chinaunix上有人說poj上有題目建議使用scanf/printf,否則做不出來。
然后我就去試了試。 先隨便在網上扒了一份代碼,TLE……
干脆自己寫,用g++提交,結果就過了,換c++提交,第2次就跳到no1去了。
不過oj上的時間測不準,精度太低。其他人多提交幾次可能也會沖到no1去。


iostream的格式化是靜態分派的,printf/scanf是動態分派。
在格式化上,iostream的機制理論上的效率是會高而不是低。

iostream輸在格式化后的其他事情上去了。iostream下還有一層client可知的streambuf層次。

iostream多這一個層次,就將"格式化"與"緩沖"工作分開了。
你可以復用iostream的格式化功能,但給它一個不同于file的目的地,比如socket、memory、null —— 只要傳遞給它相應的streambuf就行。

對于memory作為目的地,stl提供了stringbuf。并有相應的stringstream在iostream上增加一些接口,使得client不用直接操縱stringbuf。
C標準庫相應有sprintf,sscanf。但要這么看,sprintf不能擴容。
類似的還有在我最開始接觸vector的時候,也覺得它慢。因為我拿vector和固定大小數組比較。但當我不做oj,數組大小不方便提前計算出時,怎么辦?
而且,stl其實還有strstream……

以socket作目的地? printf/scanf怎么搞?
自己實現printf/scanf嗎? 你覺得這容易嗎?
如果不自己實現printf/scanf,那就只能利用緩存。
拿這種情況和iostream + socketbuf比較,那才公平。

iostream還有很多亂七八糟的功能,locale,expcetion,callback,fillchar……

總之,在一個只處理build-in類型,數組/緩沖大小可以提前計算并按最大值提供,不需要按需提供/擴展,不處理多語言的情況下 —— OJ的情況下 ——確實利用不了iostream,vector等提供的功能。
但OJ做多了,就反過來說它們的不是,就很扯蛋了。
說實話,OJ的代碼普遍是上不得臺面的,大家自己心里清楚。
根本就沒有一點點軟件工程的美感在里面。可復用嗎?不能,都是一次性筷子,完全是為了AC而已。

在實際開發中,沒有這么多美好的前提條件。

即使iostream功能比printf/scanf多得多,如果iostream的格式化比printf/scanf有數量級的差異,沒得說,那肯定是iostream實現得太爛……
同樣的是格式化和讀寫文件操作,多一個間接層次就導致效率數量級的下降?那不是寫得爛能是什么呢?找個好點的吧。
還有用VC6的OJ(非POJ),你能拿它怎么辦呢?

  回復  更多評論
  

# re: [轉載]ACM技巧——for amateur only 2009-11-12 14:38 OwnWaterloo
好像說偏題了……

chinaunix上討論時,他并沒有說是哪一題,只說有題目提示說要用scanf/printf。他自己也記不清楚是哪一題了。
2602是我自己找出來的,覺得這題比較變態。

如果樓主在做其他題目時,發現題目下面有提示說使用scanf/printf的話,還請通知我一下,謝謝~_~
  回復  更多評論
  

# re: [轉載]ACM技巧——for amateur only 2009-11-15 16:25 iSsay
@OwnWaterloo
POJ2602上面那道題,可能沒有體現出printf的優點吧。如果加上格式控制就不一樣了。
那個hint估計也就是這個意思,就有點像入門題,先給你一個提示,讓你以后做題的時候考慮到printf。。
  回復  更多評論
  


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲国产成人porn| 亚洲一区二区三区免费在线观看| 欧美福利视频网站| 欧美精品乱码久久久久久按摩| 欧美aⅴ99久久黑人专区| 久久美女艺术照精彩视频福利播放| 亚洲欧美日韩在线| 久久久久久综合网天天| 久久久久九九九| 欧美成人精品在线| 国产精品激情| 在线观看欧美日韩| 国产精品99久久久久久白浆小说| 欧美一区国产一区| 欧美成人激情视频| 中文网丁香综合网| 久久国产精品99国产精| 欧美精品三级在线观看| 欧美日韩国产综合网 | 91久久精品日日躁夜夜躁国产| 亚洲国产成人精品视频| 亚洲视频久久| 欧美电影资源| 午夜精品免费在线| 欧美激情精品久久久久久变态 | 一本大道久久a久久精品综合| 亚洲欧美在线看| 亚洲电影免费在线| 亚洲欧美成人一区二区三区| 久久伊人亚洲| 国产女优一区| 国产精品99久久99久久久二8| 噜噜噜躁狠狠躁狠狠精品视频 | 欧美天天影院| 亚洲国产清纯| 久久精品欧美日韩| 亚洲视频久久| 欧美日韩国产一级| 亚洲精品一二三| 免费91麻豆精品国产自产在线观看| 亚洲视频免费看| 欧美美女bbbb| 日韩视频在线观看| 欧美大胆人体视频| 欧美在线一二三四区| 欧美亚洲一区二区在线| 一本色道88久久加勒比精品| 麻豆精品视频在线| 欧美一区二区三区四区在线| 国产精品久久久久久久久久久久久久 | 久久精品一区蜜桃臀影院| 国产精品草草| 亚洲午夜久久久久久久久电影网| 亚洲承认在线| 老色批av在线精品| 在线激情影院一区| 你懂的国产精品永久在线| 久久黄色小说| 伊人久久噜噜噜躁狠狠躁| 久久午夜av| 老**午夜毛片一区二区三区| 亚洲福利视频二区| 亚洲国产成人午夜在线一区| 欧美电影免费观看高清| 99精品国产一区二区青青牛奶| 亚洲茄子视频| 欧美亚洲第一区| 欧美一区二区在线免费播放| 亚洲欧美日韩在线不卡| 国色天香一区二区| 欧美国产第二页| 欧美另类人妖| 久久人人爽人人爽爽久久| 好看不卡的中文字幕| 欧美国产欧美亚州国产日韩mv天天看完整| 久久亚洲午夜电影| 亚洲精品自在在线观看| 亚洲人成网站影音先锋播放| 国产精品扒开腿做爽爽爽视频| 欧美在线播放一区二区| 久久精品视频在线| 亚洲精品小视频在线观看| 一区二区三区免费看| 国产综合色精品一区二区三区| 欧美91大片| 欧美色精品天天在线观看视频| 香蕉久久精品日日躁夜夜躁| 久久久一区二区三区| 在线免费观看成人网| 免费成人性网站| 蜜臀av性久久久久蜜臀aⅴ| 在线看片欧美| 亚洲国产欧美不卡在线观看| 欧美肥婆在线| 一区二区激情| 亚洲午夜免费视频| 国产欧美精品一区二区三区介绍| 久久成人免费日本黄色| 久久精品国产99国产精品| 一区在线免费| 亚洲国产精品一区二区www| 欧美极品aⅴ影院| 性欧美xxxx大乳国产app| 久久国产精品黑丝| 在线观看不卡| 亚洲国产精品久久久久秋霞影院| 欧美激情国产日韩| 亚洲欧美激情视频| 欧美一区网站| 亚洲激情第一区| 亚洲美女在线视频| 国产欧美一区二区精品婷婷| 美玉足脚交一区二区三区图片| 欧美xx视频| 午夜视频在线观看一区| 欧美国产日韩精品免费观看| 久久久美女艺术照精彩视频福利播放 | 99热在线精品观看| 久久一区欧美| 国产精品久久久久9999高清| 久久亚洲欧洲| 最新成人在线| 久久久久九九视频| 久久精品人人做人人爽电影蜜月| 欧美日韩午夜| 亚洲精品网站在线播放gif| 最新亚洲电影| 欧美jizz19性欧美| 欧美福利视频一区| 好吊视频一区二区三区四区| 西瓜成人精品人成网站| 欧美一区二区在线观看| 国产精品一区二区你懂的| 亚洲天堂网在线观看| 亚洲直播在线一区| 国产精品国产三级国产aⅴ浪潮 | 欧美日韩亚洲一区二区| 亚洲人成在线影院| 一本久道久久久| 欧美理论电影网| 亚洲全黄一级网站| 制服诱惑一区二区| 国产精品久久久久一区| 亚洲一区二区在线看| 欧美在线观看网址综合| 国产主播精品| 久久亚洲精品网站| 亚洲国产片色| 亚洲一区国产精品| 国产日韩精品一区二区| 久久久九九九九| 亚洲狠狠婷婷| 午夜在线一区| 在线观看日韩www视频免费| 欧美成人免费va影院高清| 日韩视频精品在线| 久久激情综合网| 91久久久在线| 国产精品久久久一本精品| 久久国产精品久久久久久久久久 | 久久九九国产| 免费欧美日韩国产三级电影| 亚洲精品一区二区在线观看| 欧美乱大交xxxxx| 亚洲网站在线观看| 老司机凹凸av亚洲导航| 99香蕉国产精品偷在线观看| 国产精品一区二区三区成人| 久久综合电影一区| 一本色道久久综合亚洲精品高清 | 欧美怡红院视频| 亚洲黄色大片| 国产精品免费视频观看| 免费亚洲一区二区| 亚洲女优在线| 亚洲黄色免费网站| 久久xxxx精品视频| 亚洲免费观看高清在线观看| 国产午夜久久久久| 欧美色区777第一页| 老司机一区二区三区| 亚洲欧美视频一区二区三区| 91久久久久久国产精品| 久久免费精品日本久久中文字幕| 一区二区三区毛片| 最新亚洲激情| 在线日韩欧美视频| 国产日韩欧美综合精品| 欧美私人啪啪vps| 欧美精品久久久久久久| 美腿丝袜亚洲色图| 欧美中文在线观看国产| 亚洲一区二区三区在线视频| 亚洲黄色尤物视频| 欧美大片免费看| 免费一级欧美在线大片| 久久久一本精品99久久精品66| 亚洲免费小视频| 亚洲午夜一区| 亚洲一区精品电影|