D. XOR Construction

D. XOR Construction_第1张图片

 解题思路:这题要按照它的性质来解,由于该题的特殊性,只要有一个位置的数确定,则都可以确定,由于最终的数字都已固定为0—n-1,所以其各个位置上的01数字的总和也已确定,我们可以假设,b1=0,然后各个位置上的01数也可确定,但由其性质,0的个数一定大于等于其1的个数,所以每次对其一位进行判断,若算出1比0多,则说明b1在该位上的取值不对,应该为1,修改即可

#include 
using namespace std;
const int N = 2e5+10;
int n,a[N],b1;
int main ()
{
	scanf("%d",&n);
	for(int i=1;i=0;i--)
	{
		int cnt=0;
		for(int j=n-1;j>=0;j--)
		{
			cnt+=(a[j]>>i&1);
		}
		if(cnt>n-cnt) b1|=(1<

你可能感兴趣的:(算法,c++,开发语言)