我才不是蘿莉控呢

2021-07-05 02:16:38 字數 1316 閱讀 8469

有乙個長度為

n 的正整數陣列

a,滿足ai

≥ai+

1 ,現在構造乙個陣列

b ,令bi

=∑in

ai。 現在,有乙個n∗

n 的網格圖,左下角座標是(1

,1) ,右上角座標是(n

,n) 。有乙個人正在座標為(n

,1) 的位置,每一時刻,如果他現在在(x

,y) ,他可以選擇走到(x

−1,y

+1) 或者(x

,⌊y2

⌋),如果選擇後者,他要支付bx

的代價。

現在他想走到(1

,1) ,你可以告訴他他支付的代價最少是多少嗎?注意在任何時候他都不能離開這個網格圖。

引用題解:

這個問題的答案就是陣列 a 中所有元素的哈夫曼樹的權值。

因為陣列是有序的,所以在哈夫曼樹中的深度一定是單調不減的。我們考慮每乙個位置,把fi

,j看成現在已經放入了下標比

i 小的所有節點,剩餘的葉子節點有

j個。

那麼我們每一次有兩種選擇,

第一種是把所有葉子節點都擴充套件出兩個後繼,這時剩下所有節點的深度都增加了

1 ,所以付出的代價是 ∑k

=i+1

nak,狀態變成了 f2

∗i,j

; 第二種是把第

i 個數填在乙個葉子上,這時狀態變成了 fi

+1,j

−1。最終的答案就是 mi

n(fn

+1,k

),(k

>0)

。 我們把這個 dp 過程倒過來,就變成了題目中描述的走路的樣子。所以只需要求哈夫曼樹就好了,這是經典演算法(合併果子)。

用priority_queue略慢…建議用make_heap

#include 

#include

using

namespace

std;

typedef

long

long ll;

const

int n = 1e5 + 10;

int n,a[n];

priority_queue< ll , vector

, greater> s;

int main()

ll ans = 0;

for (int i = 1;i < n;i ++)

printf("%lld\n",ans);

}}

JZOJ 4210 我才不是蘿莉控呢!

題目名我已經無力吐槽。a 你是蘿莉控嗎?b 我給你道題目吧!有乙個長度為 n 的正整數陣列 a,滿足ai ai 1,現在構造乙個陣列 b 令bi nj ibj 現在,有乙個n n 的網格圖,左下角座標是 1 1 右上角座標是 n n 有乙個人正在座標為 n 1 的位置,每一時刻,如果他現在在 x y...

五校聯考1day1 我才不是蘿莉控呢

小y 小r 你是蘿莉控嗎。小r 為了避免這個尷尬的話題,小r 決定給小y 做一道題。有乙個長度為n 的正整數陣列a,滿足ai ai 1,現在構造乙個陣列b,令bi 現在,有乙個n n 的網格圖,左下角座標是 1,1 右上角座標是 n,n 有乙個小sb正在座標為 n,1 的位置,每一時刻,如果他現在在...

快速冪 HRBUST 2263 蘿莉控型提督

time limit 1000 ms memory limit 32768 k愚蠢的小林作為乙個蘿莉控型提督,立志要建立一支強大的由蘿莉艦娘組成的遠洋艦隊。眾所周知的是,在 艦隊collection 中一支艦隊是由最多6只不同的船組成的。作為小林的朋友,聰明又機智的小t發現了乙個遊戲裡的bug。這樣...