JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java 技巧文件 » UVA(ACM)討論  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
己加入精華區
by 秒殺 at 2008-09-28 12:08
本主題所含的標籤
作者 用 Java 參加 UVa Online Judge 必備程式 [精華]
秒殺



版主

發文: 131
積分: 2
於 2008-09-14 00:03 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
用 Java 處理基本的 I/O 會比起 C, C++, Pascal 難上一些
而且 Java 內建的 Scanner 速度不夠快, 有些題目必定會 TLE
這個程式片段用在解題上非常方便而且速度又很快的喔

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/**
 * ### 真難的題目: 狗屁演算法 (測資很機車)
 * 測驗結果: x.xx0 ms
 * 測驗日期: 200y-mm-dd
 * @author Raymond Wu (小璋丸)
 */
public class Main {
 
  // 輸入緩衝區 (緩衝空間需要依照題目調整)
  public static byte[] cinbuf = new byte[1024];
 
  // 讀取一個單字 (英文姓名包含空白時請不要用)
  public static String readToken() {
    int offset = 0;
    int bytedata = -1;
    
    try {
      // 略過非單字的字元 '\t','\n','\r',' '
      bytedata = System.in.read();
      while(bytedata==9||bytedata==10||bytedata==13||bytedata==32) {
        bytedata = System.in.read();
      }
 
      // 載入單字的字元
      while(bytedata!=-1) {
        if(bytedata==9||bytedata==10||bytedata==13||bytedata==32) {
          break;
        } else {
          cinbuf[offset++] = (byte)bytedata;
        }
        bytedata = System.in.read();
      }
    } catch(Exception e) {}
    
    if(offset+bytedata==-1) return null; // 串流結束
    return new String(cinbuf,0,offset);
  }
  
  // 讀取一行
  public static String readLine() {
    int offset = 0;
    int bytedata = -1;
    
    try {
      // 載入整行
      bytedata = System.in.read();
      while(bytedata!=-1) {
        if(bytedata==10) {
          break;
        } else {
          cinbuf[offset++] = (byte)bytedata;
        }
        bytedata = System.in.read();
      }
    } catch(Exception e) {}
 
    if(offset+bytedata==-1) return null; // 串流結束
    if(cinbuf[offset-1]=='\r') offset--; // window 要去除 '\r' 字元
    return new String(cinbuf,0,offset);
  }
  
  // 轉成 int 型態 (比 Integer.parseInt() 快)
  public static int parseInt(String s) {
    int i;
    int mul = 10;
    int value = s.charAt(s.length()-1)-48;
    
    for(i=s.length()-2;i>=0;i--) {
      value += (s.charAt(i)-48)*mul;
      mul *= 10;
    }
    
    return value;
  }
  
  public static void main(String[] args) {
    // TODO
  }
 
}


秒殺 edited on 2008-09-28 10:53
reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
7256 [精華] 用 Java 參加 UVa Online Judge 必備程式 秒殺 1964 2008-09-14 00:03
6926 Re:[UVA] 用 Java 參加 UVA(以前的ACM) 競賽必備程式 秒殺 330 2008-09-20 03:37
3547 Re:[UVA] 用 Java 參加 UVA(以前的ACM) 競賽必備程式 tomoyaken14 65 2011-04-18 22:27
3520 Re:用 Java 參加 UVa Online Judge 必備程式 skywild 44 2012-02-14 13:15
» JWorld@TW »  Java 技巧文件 » UVA(ACM)討論

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8