Codeforces 1389 題解(A-D)

AC代碼git

A. LCM Problem

\(a < b\),則\(LCM(a,b)\)\(a\)的整數倍且\(LCM(a,b) \ne a\),因此\(LCM(a,b) \ge 2a\),當且僅當\(b=2a\)時取等號。github

根據這個性質,就能夠讓\(a=l, b = 2l\),若是符合條件就輸出,不然無解。spa

B. Array Walk

這題暴力+貪心作。字符串

根據貪心,答案一定取在在同一個位置左右橫跳的狀況下。get

因爲\(z\)的取值很小,因此直接枚舉走到第\(i\)個位置以後左右橫跳\(c\)次的收益,而後再加上走完剩餘步數的收益,取最大值爲答案。string

注意,剩餘步數爲\(1\)\(c<z\)時要考慮向左走的狀況。it

C. Good String

易得,字符串符合條件\(\Leftrightarrow\)字符串有長度爲2的循環節。io

而後就暴力枚舉循環節,每次遍歷一遍字符串計算代價,代價的最小值就是答案。ast

注意,僅當循環節的兩個字符都同樣時才能夠不徹底循環。class

D. Segment Intersections

首先,若是\([l1,r1]\)\([l2,r2]\)相交,那麼就能夠不耗費步數增長\(I\)

而後,若兩個線段不相交,則耗費必定的步數以後,能夠到達兩個線段相交的狀態。

在兩個線段相交但不徹底相等的狀況下,耗費1步能夠使\(I\)增長1,直到兩個線段徹底相等。

最後,在兩個線段徹底相等以後,就只能耗費2步使\(I\)增長1。

而後,就是快樂的模擬過程了,優先使用耗費步數低的操做,直到\(I>k\)

相關文章
相關標籤/搜索