BZOJ 4245 OR-XOR

Posted ziliuziliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ 4245 OR-XOR相关的知识,希望对你有一定的参考价值。

按位贪心。

前缀异或和没话说。一位为0当且仅当这一位有m个0,且第n个数这一位为0。

如果这一位可以为0,那么所有这一位为1的数以后都不能选。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 500050
using namespace std;
long long n,m,a[maxn],ans=0,table[70];
bool vis[maxn];
void get_table()
{
    table[0]=1;
    for (long long i=1;i<=63;i++)
        table[i]=table[i-1]*2;
}
int main()
{
    get_table();
    scanf("%lld%lld",&n,&m);
    for (long long i=1;i<=n;i++) scanf("%lld",&a[i]);
    for (long long i=1;i<=n;i++) a[i]^=a[i-1];    
    for (long long i=63;i>=0;i--)
    {
        long long ret=0;
        for (long long j=1;j<=n-1;j++)
        {
            long long bit=a[j]&table[i];
            if ((!(a[j]&table[i])) && (!vis[j]))
                ret++;
        }
        if ((ret>=m-1) && (!(a[n]&table[i])) && (!vis[n]))
        {
            for (long long j=1;j<=n;j++)
            {
                if (a[j]&table[i])
                    vis[j]=true;
            }
        }
        else ans|=table[i];
    }
    printf("%lld\n",ans);
    return 0;
}

 

以上是关于BZOJ 4245 OR-XOR的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ 4245 OR-XOR

BZOJ 4245: [ONTAK2015]OR-XOR

BZOJ4245[ONTAK2015]OR-XOR 贪心

bzoj4245[ONTAK2015]OR-XOR

4245: [ONTAK2015]OR-XOR

P4245 模板任意模数多项式乘法(NTT)