码迷,mamicode.com
首页 > 其他好文 > 详细

2014.11.12模拟赛【美妙的数字】| vijos1904学姐的幸运数字

时间:2014-11-12 22:55:01      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:blog   io   ar   os   sp   for   数据   div   on   

美妙的数字(number.c/.cpp/.pas)

题目描述

    黄巨大认为非负整数是美妙的,并且它的数值越小就越美妙。当然0是最美妙的啦。

    现在他得到一串非负整数,对于每个数都可以选择先对它做二进制非运算(模二意义下0、1互换,注意前导0也要交换),然后在任意相邻的两个数之间插入二进制与、二进制或,或者二进制异或。现在他想知道这样计算完产生的最美妙的数字是多少。

    一共T组数据。对于每组数据,第一行一个n,表示这组数据中一串数有多少个。下面n个非负整数,表示这串数。

样例输入

2

2

3 6

3

1 2 3

样例输出

1

0

样例解释:

3 & (! 6) = 1

1 & 2 ^ 3 = 0

数据规模

对于50%数据,1<=N<=6,1<=a[i]<=2^20-1

对于100%数据,1<=N<=100,1<=T<=10,1<=a[i]<=2^63-1

原题vijos1904学姐的幸运数字

此题有一个很厉害的结论:对于n>=8的情况,一定有一种方案使得答案为0

所以剩下的直接爆搜就好了

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<deque>
#include<set>
#include<map>
#include<ctime>
#define inf 9223372036854775807ll
#define LL long long
#define pa pair<int,int>
#define pi 3.1415926535897932384626433832795028841971
using namespace std;
inline LL min(LL a,LL b){return a<b?a:b;}
int n;
LL ans;
LL a[100010];
LL b[100010];
inline LL read()
{
    LL x=0,f=1;char ch=getchar();
    while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}
    while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}
    return x*f;
}
inline void dfs(int x,LL now)
{
	if (x==n+1)
	{
		ans=min(ans,now);
		return;
	}
	LL test=now;
	test=now&a[x];dfs(x+1,test);
	test=now&b[x];dfs(x+1,test);
	test=now^a[x];dfs(x+1,test);
	test=now^b[x];dfs(x+1,test);
	test=now|a[x];dfs(x+1,test);
	test=now|b[x];dfs(x+1,test);
}
inline void work(int rnk)
{
	n=read();
	for(int i=1;i<=n;i++)cin>>a[i];
	if (n>=8)
	{
		printf("0\n");
		return;
	}
	memset(b,0,sizeof(b));
	for(int i=1;i<=n;i++)
	{
		b[i]=inf-a[i];
	}
	ans=min(a[1],b[1]);
	dfs(2,a[1]);
	dfs(2,b[1]);
	cout<<ans<<endl;
}
int main()
{
	int T=read();
	for (int i=1;i<=T;i++)work(i);
	return 0;
}

  

2014.11.12模拟赛【美妙的数字】| vijos1904学姐的幸运数字

标签:blog   io   ar   os   sp   for   数据   div   on   

原文地址:http://www.cnblogs.com/zhber/p/4093564.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!