LG模擬賽 2 T2 kk公司,貪心合併

2021-10-19 21:08:53 字數 1333 閱讀 2075

/kk 公司有很多 /kk,還有很多 /cy。除了老闆之外,每個人都有乙個直屬的上司。

某天他們想要拍一張合照。出於尊敬,每個人都必須站在自己的上司的右側(不需要緊挨著)。

但是老大認為 /kk 站在 /cy 的左邊不好。合照中每有一對 /kk 和 /cy,使得 /kk 站在 /cy 的左邊(不需要緊挨著),那麼老大的憤怒值就會增加 111。

請你幫忙最小化老大的憤怒值。即,把所有 /kk 和 /cy 排成一排,使得每個人都要站在自己上司的右側,並且最小化

i

ii 站在 j

jj 的左側,並且 i

ii 是 /kk 而 j

jj 是 /cy

這樣的 (i,

j)

(i,j)

(i,j

) 對數。

這題好像在哪做過,但是說不清楚了。

做法也非常的顯然。

設乙個節點管理的0

00的個數為a

aa,1

11的個數為bbb。

可以考慮乙個節點的兩個兒子x,y

x,yx,

y的先後順序,x比y優當且僅當axb

y

bx

a_xb_yax

​by​

​bx​

,即a xb

x

by

\frac<\frac

bx​ax​

​​ay​

​。所以先後順序只跟自身的a,b

a,ba,

b有關。

那麼就顯然可以開乙個堆來維護了,每次取出這樣的最小值,令其與父親節點合併,並算出合併產生的01數量,加入答案中,再作為乙個整體,加入堆中。

#include

using

namespace std;

const

int n=

200010

;struct node};

priority_queue qs;

int fa[n]

,a[n]

,b[n]

,n,f[n]

;int

findpa

(int x)

intmain()

);else b[i]=1

,qs.

push

((node));

}long

long ans=0;

while

(!qs.

empty()

));}

printf

("%lld\n"

,ans)

;}

LG模擬賽 2 T3 搬題

可憐的出題人 跟九條可憐沒有關係 要給 n nn 個地方出題。但是出題人太累了,他決定把以前給這些地方出過的題重新搬一搬。這 n nn 個地方以 1,n 1,dots,n 1,n 編號。出題人總結出了他們之間的聯絡,是乙個樹形。如果出題人把以前給第 i ii 個地方出的題搬到第 j jj 個地方,那...

LG模擬賽 3 T2 簽到題

你面前有乙個來歷不明的 01 序列 a 0.m 1a a0.m 1 為了調查明白這東西是從 冒出來的,你想知道有多少個整數 x 0,l x in 0,l x 0,l 滿足 i 0,m 1 popcount x i mod2 a i forall i in 0,m 1 operatorname x i...

計蒜客NOIP模擬賽 2 D2T2紫色百合

問題描述 牽著你的手的是她,路邊開滿了紫色的百合花 你從夢中醒來,卻依然忘不了夢中的 她百合花,每朵百合花都有乙個權值,在二進位制下寫成一行 1 第 i朵紫色百合的權值在二進位制下寫成i個 1 你想挑出其中一些組成 一束百合花 且價值在二進位制下恰好為乙個 1 後面p個 0 那麼有多少種挑選方案呢?...