Codeforces Round #511 Div. 2

C題水題沒做出來,反而猜對了D題,還好排名變化不大。

A. Little C Loves 3 I

題意

給出一個數nn,要求取三個不爲33倍數的數a,b,ca, b, c,滿足a+b+c=na+b+c=n

思路

nn330011,則取a=1,b=1,c=n2a=1, b=1, c=n-2;否則取a=1,b=2,c=n3a=1, b=2, c=n-3

B. Cover Points

題意

給出一些位於第一象限的點,取三個頂點分別爲(0,0)(0, 0)(0,a)(0, a)(a,0)(a, 0)的等腰三角形,求a的最小值使得三角形包含所有點。

思路

等腰三角形的底位於直線x+y=ax+y=a上,若三角形包含所有點,則每一個點(xi,yi)(x_i, y_i)滿足xi+yiax_i+y_i\le a,故a=max{xi+yi}a = max\{ x_i+y_i \}

C. Enlarge GCD

題意

nn個數,移除一些數可以使得所有數的最大公約數變大,問最少需要移除多少個數。

思路

f(x)f(x)表示nn個數中以xx爲公約數的數量,那麼只需要找到xx'使得x>xx'>x並且f(x)<nf(x')<n,最少需要移除nf(x)n-f(x')個數。借鑑線性篩質數的思想,先求出最大公約數,再遞增篩選。若xx'未被篩去,則篩去xx'的所有倍數,並計算對應的數量之和f(x)f(x'),否則跳過,最後取f(x)f(x')的最大值。

D. Little C Loves 3 II

題意

有一個n×mn \times m的棋盤,每次放置兩枚曼哈頓距離爲33的棋子,問最多可以放置多少枚棋子。

思路

分別取nnmm的較小值aa和較大值bb,若a=1a=1,則棋盤大小爲1×b1 \times b,每連續66格剛好可以放置33對棋子,當剩下的格子等於44時可以再放置11對,等於55時可以再放置22對;若a=2a=2,則棋盤大小爲2×b2 \times b,每連續445566格剛好可以放滿棋子,故除了11223377格以外均可以通過組合放滿棋子,1122格不能放棋子,33格只能放11對棋子,77格只能放66對棋子;若a3a \ge 3,則可以儘可能多地放置棋子,當格子總數爲偶數時可以放滿,爲奇數時空11格,具體證明如下,3×33 \times 33×43 \times 43×53 \times 53×63 \times 64×44 \times 44×54 \times 5以及2×42 \times 42×52 \times 52×62 \times 6的棋盤可以儘可能放置棋子,其餘棋盤可以通過組合得到。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章