/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
bxax
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 那麼有多少種挑選方案呢?...