Ivan and Powers of Two

题意:

给出n个数a1,a2,...,an.按升序排序,表示2a1,2a2,...,2an,
设一个序列b1,b2,...,bm,使2a1+2a2+...+2an+2b1+2b2+...+2bm=2k-1.求m的最小值(其中k为非负整数).

输入格式:

共两行:
第一行为n.
第二行为n个数,即a1,a2,...,an.

输出格式:

共一行,即m的最小值.

输入样例1:

4
0 1 1 1

输出样例1:

0

输入样例2:

1
3

输出样例2:

3

题解:

首先,将重复的数合并,如两个2,我们可以将其合为一个3;五个3,我们可以将其合为一个3与一个5.
接着,我们可以发现每个ai都只存在一个或零个.故我们可以将其看为一个01串,而我们的最终目标就是将所有的0变为1,故统计01串长度与1的个数,两者做减法即为答案.

代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	while(1){
		printf("自己打!\n");
	}
	return 0;
}

绝对不是因为我代码太丑才不放上来的

posted @ 2021-07-08 19:57  cqbz_xsh  阅读(30)  评论(0)    收藏  举报