1. 程式人生 > 其它 >Ivan and Powers of Two

Ivan and Powers of Two

題意:

給出$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;
}

絕對不是因為我程式碼太醜才不放上來的