有乙個長度為
n 的二元組陣列,要求把它劃分為若干段,不妨設劃分出了
m段,二元組
i 的第乙個數為ai
,第二個數為bi
,要求在滿足∑m
−1i=
0(ma
xrij
=lia
j)<=li
mita
的情況下,最小化ma
xm−1
i=0(
∑rij
=lib
j)
其中n<=
20000
答案顯然可以二分,記為li
mitb
,然而二分後直接亂塞顯然是
0 分的。 考慮d
p,記fi
表示將i 之前的塞好了的組的和的最小值。 o(
n2)的轉移很顯然。fi
=max
j∑il=
j+1b
lmitb
(fj+
maxi
k=j+
1ak)
然而總時間複雜度o(
nlog
2n) 無法接受。
考慮兩個決策
k 和l且
k<
l ,實際上它們轉移給後面的狀態的值可以分成兩部分,第一部分是fk
和fl ,這部分只會修改一次。第二部分是每組中的最大值,記為ma
xik 和ma
xil ,若ma
xik≠
maxi
l ,那麼影響ma
xik 的值的二元組必定在
j 之前,否則必定在
j之後。也就是說一旦ma
xik=
maxi
l 那麼他們再也不可能不相等,我們可以將它們**在一起更新第二部分的值。
然後不妨用線段樹來維護決策fj
+max
ik=j
+1ak
的值。那麼計算fi
的時間複雜度降到了o(
logn
) 。而維護這個值我們也是分開兩部分維護,對於第一部分是簡單的單點查詢和維護最小值,第二部分是區間修改,再維護乙個和的最小值,這道題就做完了。
由於我們每一次需要合併若干個組,然後將它們的ma
xi統一賦值。而
n 個組最多隻需要合併成乙個。那麼合併以及對ma
xi維護的的總的複雜度是o(
nlog
n)的。
時間複雜度o(
nlog
2n) ,空間複雜度o(
n)。這道題我在比賽時想的是用單調佇列來維護決策。然而無法處理轉移決策範圍的問題。也就是說最優決策不一定能選到。其實這裡用線段樹就可以簡單地迴避了這個問題了,只是我沒有去想如何很好的維護這個值,也有一點受之前做這類題目的影響吧。然而維護這個值並不是特別難的。
這道題算是對線段樹使用的乙個不錯的技巧題。
NOIP2013模擬聯考5 軍訓
hysbz 開學了!今年hysbz 有n 個男生來上學,學號為1 n,每個學生都必須參加軍訓。在這種比較墮落的學校裡,每個男生都會有gi 個女朋友,而且每個人都會有乙個欠扁值hi。學校為了保證軍訓時教官不會因為學生們都是人生贏家或者是太欠扁而發生打架事故,所以要把學生們分班,並做出了如下要求 1.分...
八校聯考2013 百團大戰
在數軸上,每一秒可以移動 v 個單位,有 n個得分點,在ti 時刻移動到xi 可以得到一分。問 若時刻 0 在 0這個位置則最多可以得多少分?若時刻 0 在任意位置最多可以得多少分?1 n 100000,xi 200,000,000,1 ti 1,000,000 這道題在做的時候我用的是o nlog...
關於五校聯考
一 為什麼向大家推薦五校聯考 2 學校可靠。hec,essec,escp eap 都在巴黎,這些是法國最好的商校,這一點不必多說。其中hec對於經濟條件不佳的學生有相當可觀的學費減免,很多中國學生都被全免了學費。escp eap也有一定程度上的學費減免。e.m.lyon在里昂,是外省唯一可以和巴黎三...