Ivan and Powers of Two
阿新 • • 發佈:2021-07-08
題意:
給出$n$個數$a$$1$$,a$$2$$,...,a$$n$$.$按升序排序,表示$2$$a$$1$$,2$$a$$2$$,...,2$$a$$n$,
設一個序列$b$$1$$,b$$2$$,...,b$$m$,使$2$$a$$1$$+2$$a$$2$$+...+2$$a$$n$$+2$$b$$1$$+2$$b$$2$$+...+2$$b$$m$$=2$$k$$-1.$求$m$的最小值$($其中$k$為非負整數$)$.
輸入格式:
共兩行:
第一行為$n$.
第二行為$n$個數,即$a$$1$$,a$$2$$,...,a$$n$$.$
輸出格式:
共一行,即$m$的最小值.
輸入樣例1:
4
0 1 1 1
輸出樣例1:
0
輸入樣例2:
1
3
輸出樣例2:
3
題解:
首先,將重複的數合併,如兩個$2$,我們可以將其合為一個$3$;五個$3$,我們可以將其合為一個$3$與一個$5$.
接著,我們可以發現每個$a$$i$都只存在一個或零個.故我們可以將其看為一個$01$串,而我們的最終目標就是將所有的$0$變為$1$,故統計$01$串長度與$1$的個數,兩者做減法即為答案.
程式碼:
#include<bits/stdc++.h> using namespace std; int main(){ while(1){ printf("自己打!\n"); } return 0; }
絕對不是因為我程式碼太醜才不放上來的