Link: http://tioj.ck.tp.edu.tw/problems/1667
逆序數對裸題,這題的N有點小,感覺好像也可以暴力做,不過懶得測試暴力法
解法: 用BIT做逆序數對+離散化,因為他給的數字不保證<=100所以需要事先做離散化
輸入改用scanf就刷到rank 1了 (開心)
Link: http://tioj.ck.tp.edu.tw/problems/1667
逆序數對裸題,這題的N有點小,感覺好像也可以暴力做,不過懶得測試暴力法
解法: 用BIT做逆序數對+離散化,因為他給的數字不保證<=100所以需要事先做離散化
輸入改用scanf就刷到rank 1了 (開心)
Link: http://tioj.ck.tp.edu.tw/problems/1206
把題目給的字串反轉,做z value(z algorithm)即可
如果第i個字元(0-based)的z value( z[i]
)>=i 就代表那是一個可能的密碼,取最大值就是答案了
複雜度: O(n)
Link: https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=3269
有一堆積木,要拿來拼成 的長方形,請問有幾種方法。 積木不可旋轉,答案需模1000000000000。
位元DP記錄積木的形狀,我的寫法是記錄積木中間連續的寬度,左右兩邊多出來的形狀
線段樹裸題,貼個我習慣的線段樹寫法
Link: http://tioj.ck.tp.edu.tw/problems/1396
code隨便亂寫,總覺得這題測資很弱,誤會題意時居然就亂寫AC了
分別A,B需要幾步驟再比較即可
這題比較需要注意的是當X==Y時,要特判如果有覆蓋到這點代表只需1步,沒有則無法獲勝。
Link: http://tioj.ck.tp.edu.tw/problems/1446
他要求在紙上輸出一行,但並不需要依序輸出,所以先用字典續排序每一行字串,使得連續兩次輸出有較大的共同前綴(可以不需要刪除)
Link: http://tioj.ck.tp.edu.tw/problems/1308
排列組合H(n,m)
本來在想說到底該怎麼算才不會Over Flow,50!太大了啊! 後來才知道原來用巴斯卡定理解就行了(我竟然沒想到)
直接依照巴斯卡定理DP遞迴下去,AC code短短的
其實也能用迴圈跑就行了
Link: http://toj.tfcis.org/oj/pro/75/
隨機演算法-爬山演算法,隨便挑兩個點交換,如果答案更好就交換
code看起來很簡單,但我也寫錯好幾次,問了學長好幾次才寫對
Link: http://codeforces.com/contest/448/problem/C
這題有點難,本來以為要寫不出來了,沒想到在比賽剩下24分鐘的時候解出來了,解出了這一題讓我的排名變成158,rating變1721(Candidate Master),也就是有資格比Div.1了✌,下次比賽準備被Div.1電了。
這題有一點DP或divide and conquer的概念,用遞迴就可以輕鬆解出,程式碼短短38行,不過要想很久。
Link: http://toj.tfcis.org/oj/pro/63/
用Floyd-Warshall演算法就可解決,求出所有點的最短路徑,然後最遠的兩點的距離就是答案。
這題要注意的是: 兩顆珠子之間可能會有多條繩子,必須取min才會AC (LFsWang的題目總是有陷阱啊! 我又掉進去了)