网站制作现在赚钱么,中文域名最新资讯,软文是什么意思,全国网站建设哪家专业一道很有意思的题目。 先求一次前缀和#xff0c;可以发现答案是 (sum[0] xor sum[x1])or(sum[x1] xor sum[x2])or(sum[x2] xor sum[x3])or……or(sum[m-1] xor sum[n]) 然后其实#xff08;a xor b#xff09;or b a or b 那么sum[0]0,可以把柿子变成 sum[x1] or sum[x2] o…一道很有意思的题目。 先求一次前缀和可以发现答案是 (sum[0] xor sum[x1])or(sum[x1] xor sum[x2])or(sum[x2] xor sum[x3])or……or(sum[m-1] xor sum[n]) 然后其实a xor bor b a or b 那么sum[0]0,可以把柿子变成 sum[x1] or sum[x2] or …… or sum[m-1] or sum[n] 问题就变成取m-1个数使和sum[n]它们or起来最小 从高位往低位贪心即可 #includecstdio
#includeiostream
#includecstring
#includecstdlib
#includealgorithm
#includecmath
using namespace std;
typedef long long LL;
LL s[510000];
bool v[510000];
int main()
{int n,m;LL x;scanf(%d%d,n,m);for(int i1;in;i)scanf(%lld,x), s[i]s[i-1]^x;m--;LL anss[n];memset(v,true,sizeof(v));for(int i62;i0;i--){if((ans(1LLi))0){int sum0;for(int j1;jn;j)if(v[j]true)if((s[j](1LLi))0)sum;if(summ){for(int j1;jn;j)if(v[j]true)if((s[j](1LLi))0)v[j]false;}else ans|(1LLi);}}printf(%lld\n,ans);return 0;
} 转载于:https://www.cnblogs.com/AKCqhzdy/p/8945163.html