1. 程式人生 > >牛客網NOIP賽前集訓營-提高組(第一場)

牛客網NOIP賽前集訓營-提高組(第一場)

files desc 有用 做了 關於 有一個 下標 容易 adf

牛客的這場比賽感覺真心不錯!!

打得還是很過癮的。水平也比較適合。

T1:中位數:

題目描述

小N得到了一個非常神奇的序列A。這個序列長度為N,下標從1開始。A的一個子區間對應一個序列,可以由數對[l,r]表示,代表A[l], A[l + 1], ..., A[r]這段數。對於一個序列B[1], B[2], ..., B[k],定義B的中位數如下: 1. 先對B排序。得到新的序列C。 2. 假如k是奇數,那麽中位數為技術分享圖片。假如k為偶數,中位數為技術分享圖片。 對於A的所有的子區間,小N可以知道它們對應的中位數。現在小N想知道,所有長度>=Len的子區間中,中位數最大可以是多少。 題解 這個題一看就很套路了。 二分一個mid,然後賦值-1/1 關於區間中位數什麽的題目,做了幾道以後,可以考慮向二分答案,然後0/1或者-1/1 賦值判斷。 當然還要註意,偶數長度中位數是取哪一個。 類似的題目: 中位數、國際集訓隊middle;(這兩道是中位數) 還有一個 [HEOI2016/TJOI2016]排序 (這個題也是二分然後0/1排序) 本質上都是利用絕對大小沒有用,利用相對大小的關系,犧牲一個logn的復雜度,將序列變成0/1或者-1/1的序列,可以大大簡化難度,也比較容易判斷。 註意邊界情況等。

牛客網NOIP賽前集訓營-提高組(第一場)