特殊題
對我來說不知道要用什麼演算法,或是沒用任何演算法卻有挑戰性的題目都會放這。
f855: 線段覆蓋長度 加強版
這題是b966的進階版,這題如果用暴力法,也就是開一個空間為1000萬的array,有覆蓋到的為true,沒蓋到的為false,在b966據說是行得通,可以AC的,不過這題就不可能,畢竟給的時間和空間限制都被壓縮很多。
我的作法是先依據線的左端位置從左排到右,然後設定一個區間,並檢查這些線是否和這個區間有聯集,如果某條線完全沒有,就將它當作新的區間,並將前一個區間的長度加到總長度裡。如果有的話,就看區間的最左和最右需不需要更新。等所有線都檢查完後,將剩下的區間加到總長度就能得到答案。
AC (7ms, 428KB)
1 |
|
c292. APCS2017-0304-3數字龍捲風
我覺得這題不是難,它算複雜,因為要把輸出的規則變成能用迴圈跑,實在是讓我死了很多腦細胞。
解題想法
首先,以5x5的矩陣、方向為0為例,會先輸出中心,然後是左1個、上1個、右2個、下2個、左3個、…。我們把左上右下4個方向當作一個循環,可以發現,每輸出完兩個方向後,下一個方向要輸出的數就多一個 。然後3x3的矩陣需要輸出5個方向,5x5的矩陣需要輸出9個方向,7x7的矩陣需要輸出13個方向,可以得知NxN的矩陣需要N/2(用Python的角度來看是N//2)個循環 ,之後再輸出最後一個方向。
AC (3ms, 100KB)
1 |
|
a821. 4.王者之路
AC (2ms, 324KB)
1 |
|
e840. P7. 密碼強度測試(Passwords)
這題也是那種不難但判斷條件多,所以會弄的很複雜的題目。
AC (2ms, 96KB)
1 |
|
b304. 00673 - Parentheses Balance
這題我之前有用stack做過,這次看到討論區有人提議用replace,真的妙,討論區的人真的有夠聰明。
AC (18ms, 3.3MB)
1 | n = int(input()) |
b139. NOIP2005 2.校门外的树
這題我在處理路段所用的方法和上面的f855一致,只是要注意這題是頭尾都要算,所以記得要+1。
AC (3ms, 344KB)
1 |
|
c048. 10161 - Ant on a Chessboard
這題我對於條的定義是:
第1條:號碼1*1
第2條:號碼1*1+1 ~ 2*2
第3條:號碼2*2+1 ~ 3*3
以此類推
然後每一條又分成轉彎前、轉彎後
AC (2ms, 108KB)
1 |
|
封面圖源:Pixiv