C - Destroying Array
題意:給出長度爲n的數組中,再給出n個消滅數組某個位置上元素的順序.問每次消完之後在數組中連續的元素之和的最大值.
思路:倒着來做,設初始數組上的元素全部爲0,再根據給出的消滅順序從後往前填上元素.
1.若該位置的左邊和右邊都已經被訪問(即在這個位置消去之後再消去)
也就是說他們是連續着的元素,可以用並查集將他們聯通,並將數組上的元素相加.
2.每次這樣做完之後,與之前已經連續的元素之和作比較,取最大值.
D. Generating Sets
題意:找到一個數組X,使得X中的元素可以經過以下兩個操作:
1.
2.
得到給出的數組Y,並且要求數組X中的最大值儘可能的小.
思路:這兩個操作說明數組Y中的元素可以任意的除2得到數組X.
只要將數組Y中的最大元素值除2.
若除2後的值在數組Y中未出現,那麼保存;反之就繼續將該元素除2,直至未出現,或者除完2變爲0了,那麼就找到了數組X.
優先隊列+set