Peter's codebook A blog full of codes

對拍程式

使用方法 傳入兩個執行檔名稱。 例如: ./對拍 pa pb pa, pb 是你要對拍的兩隻程式。 程式會從 stdin 讀入輸入,然後重導給 pa, pb, 照正常的方式輸入測資即可。 當然也可以 ./對拍 pa pb < in 讀取測資檔。 或者 ./generator | ./對拍 pa pb 如果pa, pb 輸出相同,對拍程式輸出 AC; 否則輸出 WA,並印出 diff 結果。 賽場 1 2 3 4 5 6 7 8 9 #!/bin/bash O1="$(mktemp)" O2="$(mktemp)" tee >("./$1" > "$O1") >("./$2" > "$O2") > /dev/nu... Read more

PTC 2017/08 -- Problem 4

題目概述 給定大小 的格子點,這些格子點中, 四點決定一個正方形(注意:斜的也算)。 現在,拿掉某一個點 (x,y) ,使得能構成正方形的格子點集合為: 問用這些格子點,能畫出多少種不同正方形(頂點不同即視為不同)。 題目傳送門 PTC 2017/08 輸入 第一行是測資數量 T , 後面有 T 行, 每一行有 N x y , 代表 的格子點, 刪掉點 。 輸出 對於每一筆測資,輸出對應的正方形數量。 限制 測資數量不大於 100 筆 答案可能爆 int 範側 Input: 6 3 1 1 3 1 2 3 2 2 4 1 1 4 1 2 4 2 2 Output: 4 3 2 17 15 13 解法 想像一個由 格子... Read more

Uva 12298 -- Super Poker II

FFT + 卷積*4 (?) 有點像把 4 條合數的向量做多項式乘法, 就可以簡單得出答案了。 流程: 建合數表 -> 挑掉缺少的卡 -> 四個花色的合數表 FFT -> 四個花色對應的合數表做卷積 -> IFFT -> 答案 題目傳送門 Uva12298 程式碼 從網路各處參考來的 FFT 模板, 原先的模板精準度太差,調到 long double 還是一直吃 WA 。 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... Read more

FFT 新模板測試 -- 大數乘法

FFT + 卷積 在這裡做個筆記,假設有兩個數字 123, 567 要相乘,其實就是 兩個向量個別 DFT ,點積後在 IDFT ,就是答案。 題目傳送門 ZeroJudge a577 程式碼 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 81 82 83 ... Read more

HDU 4609 -- 3-idiots

FFT + 卷積 + 計數 WA 掉太多次,懶得寫題解了, 就貼上其他人寫的優秀題解連結吧! 3-idoits 題解連結 這裡解釋得非常清楚。 要注意這題比較要求精準度,可能是我自己 FFT 寫爛了(!) 必須開 long double 才能過。 題目傳送門 HDU4609 程式碼 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 ... Read more