10.10日noip多校聯考總結

Z_AuTwT發表於2024-10-10

10.10日noip多校聯考總結

T1

感覺就是個dij再多記錄一個換乘次數然後就像普通dij一樣跑就行了。
但是必須得將換乘次數放進dis陣列中當成一個狀態記錄下來,不能只記錄在堆中,不然做法會假。

T2

發現m=0的部分分就是用一個資料結構維護區間最大子段和。
m=1/2 就是同時維護一個最大值與次大值,求max。
對於整個問題進行維護,不斷求最大值。

T3

考場上寫了一個浮點數快速冪,對於取模操作直接減去下取整的結果。
正解其實是對於詢問變成一個 \(i=\sqrt a\) 的複數類,直接跑複數快速冪,求出實部就可以得到答案了。
但在這題不能用c++STL中自帶的complex複數類,因為STL中的complex\(i=\sqrt -1\)的虛部,但需要實現的並不是這個。

T4

考場上打了一個部分分的做法,沒有想明白它是如何判斷位於哪個位置的,以及它貪心的移動軌跡。
其實只需要對每個狀態記錄一下,跑bfs,再根據它當前的位置進行剪枝。

相關文章