#25547: 如何加速 & 多測資的多測資


allllllan123456 (God of Computer Science)

學校 : 國立臺灣大學
編號 : 13732
來源 : [140.109.20.138]
最後登入時間 :
2021-07-08 17:41:52
d364. 10637 - Coprimes -- UVa10637 | From: [125.231.121.9] | 發表日期 : 2021-05-31 17:54

這題不加速也會 AC,但是加速之後非常有感,有兩階段,第一階段是遞增數字的時候到 (剩餘總和 / 剩餘個數) 就可以停下來了,例如只剩下三個數字還可以填,但是總和空間只剩下 30,那麼我現在這個數字至多只能是 10,因為如果是 11 以上的話,那 11, 11, 11 總和至少為 33 已超過剩餘的總和空間。另外,檢驗兩兩互質的時候也可以先建表,亦有顯著的效能改進。最後把 C++ 改寫成 C 能達到效能之極致。

另外如樓下所說,這題的輸入其實是多測資的多測資,也就是說,應該由下面的方式讀取: 

 

while (cin >> N)
    for (int i=1i<=Ni++)
        cin >> n >> t, ...

如果只有 cin >> N; 的話就輸了。我也不知道為什麼要這樣設計,反正這題就是這樣。

 
 
#25548: Re:如何加速 & 多測資的多測資


allllllan123456 (God of Computer Science)

學校 : 國立臺灣大學
編號 : 13732
來源 : [140.109.20.138]
最後登入時間 :
2021-07-08 17:41:52
d364. 10637 - Coprimes -- UVa10637 | From: [125.231.121.9] | 發表日期 : 2021-05-31 17:55

7629964
 allllllan123... (God of Computer...)
d364. 10637 - Coprimes -- UVa10637AC (29ms, 80KB)
C
2021-05-31 17:38
7629950
 allllllan123... (God of Computer...)
d364. 10637 - Coprimes -- UVa10637AC (38ms, 328KB)
CPP
2021-05-31 17:32
7629925
 allllllan123... (God of Computer...)
d364. 10637 - Coprimes -- UVa10637AC (86ms, 332KB)
CPP
2021-05-31 17:24
7629911
 allllllan123... (God of Computer...)
d364. 10637 - Coprimes -- UVa10637AC (0.7s, 344KB)
CPP
2021-05-31 17:21
 
ZeroJudge Forum