1. 程式人生 > 其它 >NOIP 2016 簡要題解

NOIP 2016 簡要題解

D1T1

直接根據題意模擬即可。

程式碼

D1T2

咕咕咕。

D1T3

\(dp_{i,j,0/1}\) 表示前 \(i\) 個課,選了 \(j\) 個課,第 \(i\) 個課換不換的最小期望。

floyd 預處理兩點之間的最短路,轉移顯然。

程式碼

D2T1

資料範圍很小,考慮 \(\mathcal O(n^2)\) 求出組合數。

求個二維字首和就做完了。

程式碼

D2T2

發現切完之後其他蚯蚓要全部加 q,不好處理,考慮變成切的蚯蚓減去 q。

假設先切長度為 \(a\) 的蚯蚓,那麼切出來是 \(\lfloor pa \rfloor\)\(x-\lfloor px \rfloor\)

第二隻切長度為 \(b\) 的蚯蚓,\(b<a\),那麼 \(\lfloor pb \rfloor < \lfloor pa \rfloor\)\(b-\lfloor pb \rfloor < a-\lfloor pa \rfloor\)

那麼考慮搞三個佇列,第一個存原本蚯蚓長度,第二個存 \(\lfloor px \rfloor\),第三個存 \(x-\lfloor px \rfloor\)

那麼每一秒將三個佇列的隊首進行比較,取出最大的,從隊首扔掉,然後將切完的分別加入到第二和第三個佇列隊尾。

時間複雜度 \(\mathcal O(n+m)\)

程式碼

D2T3

咕咕咕