#37926:


zhoudaniel02@gmail.com (周孝倫)

學校 : 銘傳大學
編號 : 235507
來源 : [120.125.89.13]
最後登入時間 :
2024-10-04 15:44:35
e283. APCS 類似題 - 小崴的特殊編碼 -- 小崴系列APCS | From: [223.137.183.81] | 發表日期 : 2023-10-18 21:42

這個不要用java寫,要用C++不然幾乎不可能通過!!!

哈希表儲存,key是1 1 0 0 value是A,一直輸入一直找字典一直輸出

 
#38183: Re: 邏輯


liaoweichen1024@gmail.com (M_SQRT)

學校 : 新北市立新莊高級中學
編號 : 195452
來源 : [49.216.164.49]
最後登入時間 :
2024-10-30 23:30:05
e283. APCS 類似題 - 小崴的特殊編碼 -- 小崴系列APCS | From: [118.166.140.231] | 發表日期 : 2023-11-01 21:16

這個不要用java寫,要用C++不然幾乎不可能通過!!!

哈希表儲存,key是1 1 0 0 value是A,一直輸入一直找字典一直輸出

 

Java還是能過,只是需要考慮比較多形況。

1. 二進位

  比起哈希表,這邊把它當作二進位看就好,搭配位移運算,可以很快的算出鍵值。

2. 不使用Map

  Map與Set皆是以數結構進行儲存,適合用在多次插入與查找的情況,不過這邊的需要查找的鍵值與對應元素是固定的,不會有需要新增的情況,故此處使用陣列+二分搜會快「非常非常」多。

3. 輸入工具

  提供這個輸入工具,它不好處理,在超大的測資用起來會很快(如果題目只有很大的輸入或輸出,也可以單獨使用)

private static final int BUF_SIZ = 4096;
private static final DataInputStream dis = new DataInputStream(System.in);
private static final DataOutputStream dos = new DataOutputStream(System.out);
private static byte r, inBuf[] = new byte[BUF_SIZ], outBuf[] = new byte[BUF_SIZ];
private static int bp, br, ap;
 
private static void read() throws IOException {
    if(bp==br && (br=dis.read(inBuf, bp=0, BUF_SIZ))==-1) inBuf[0] = 127;
    r = inBuf[bp++];
}
 
private static void flush() throws IOException {
    dos.write(outBuf, 0, ap);
    ap = 0;
}
 
ZeroJudge Forum