Intel Code Challenge Elimination Round (Div.1 + Div.2, combined)

C - Destroying Array

題意:給出長度爲n的數組中,再給出n個消滅數組某個位置上元素的順序.問每次消完之後在數組中連續的元素之和的最大值.

思路:倒着來做,設初始數組上的元素全部爲0,再根據給出的消滅順序從後往前填上元素.
1.若該位置的左邊和右邊都已經被訪問(即在這個位置消去之後再消去)
也就是說他們是連續着的元素,可以用並查集將他們聯通,並將數組上的元素相加.
2.每次這樣做完之後,與之前已經連續的元素之和作比較,取最大值.

This Code

D. Generating Sets

題意:找到一個數組X,使得X中的元素可以經過以下兩個操作:
1.xi=2xi
2.xi=2xi+1
得到給出的數組Y,並且要求數組X中的最大值儘可能的小.

思路:這兩個操作說明數組Y中的元素可以任意的除2得到數組X.
只要將數組Y中的最大元素值除2.
若除2後的值在數組Y中未出現,那麼保存;反之就繼續將該元素除2,直至未出現,或者除完2變爲0了,那麼就找到了數組X.

優先隊列+set

This Code

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