/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數量,加入答案中,再作為乙個整體,加入堆中。 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) ;} 可憐的出題人 跟九條可憐沒有關係 要給 n nn 個地方出題。但是出題人太累了,他決定把以前給這些地方出過的題重新搬一搬。這 n nn 個地方以 1,n 1,dots,n 1,n 編號。出題人總結出了他們之間的聯絡,是乙個樹形。如果出題人把以前給第 i ii 個地方出的題搬到第 j jj 個地方,那... 你面前有乙個來歷不明的 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... 問題描述 牽著你的手的是她,路邊開滿了紫色的百合花 你從夢中醒來,卻依然忘不了夢中的 她百合花,每朵百合花都有乙個權值,在二進位制下寫成一行 1 第 i朵紫色百合的權值在二進位制下寫成i個 1 你想挑出其中一些組成 一束百合花 且價值在二進位制下恰好為乙個 1 後面p個 0 那麼有多少種挑選方案呢?...#include
LG模擬賽 2 T3 搬題
LG模擬賽 3 T2 簽到題
計蒜客NOIP模擬賽 2 D2T2紫色百合