C題水題沒做出來,反而猜對了D題,還好排名變化不大。
A. Little C Loves 3 I
題意
給出一個數n,要求取三個不爲3倍數的數a,b,c,滿足a+b+c=n。
思路
若n模3得0或1,則取a=1,b=1,c=n−2;否則取a=1,b=2,c=n−3。
B. Cover Points
題意
給出一些位於第一象限的點,取三個頂點分別爲(0,0)、(0,a)和(a,0)的等腰三角形,求a的最小值使得三角形包含所有點。
思路
等腰三角形的底位於直線x+y=a上,若三角形包含所有點,則每一個點(xi,yi)滿足xi+yi≤a,故a=max{xi+yi}。
C. Enlarge GCD
題意
有n個數,移除一些數可以使得所有數的最大公約數變大,問最少需要移除多少個數。
思路
設f(x)表示n個數中以x爲公約數的數量,那麼只需要找到x′使得x′>x並且f(x′)<n,最少需要移除n−f(x′)個數。借鑑線性篩質數的思想,先求出最大公約數,再遞增篩選。若x′未被篩去,則篩去x′的所有倍數,並計算對應的數量之和f(x′),否則跳過,最後取f(x′)的最大值。
D. Little C Loves 3 II
題意
有一個n×m的棋盤,每次放置兩枚曼哈頓距離爲3的棋子,問最多可以放置多少枚棋子。
思路
分別取n和m的較小值a和較大值b,若a=1,則棋盤大小爲1×b,每連續6格剛好可以放置3對棋子,當剩下的格子等於4時可以再放置1對,等於5時可以再放置2對;若a=2,則棋盤大小爲2×b,每連續4、5或6格剛好可以放滿棋子,故除了1、2、3、7格以外均可以通過組合放滿棋子,1、2格不能放棋子,3格只能放1對棋子,7格只能放6對棋子;若a≥3,則可以儘可能多地放置棋子,當格子總數爲偶數時可以放滿,爲奇數時空1格,具體證明如下,3×3、3×4、3×5、3×6和4×4、4×5以及2×4、2×5、2×6的棋盤可以儘可能放置棋子,其餘棋盤可以通過組合得到。