zoukankan      html  css  js  c++  java
  • 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
    ",ans);
        return 0;
    }
  • 相关阅读:
    Codevs1684 垃圾陷阱
    Codevs1540银河英雄传说[并查集]
    Poj1182食物链[并查集]
    树的顺序遍历的应用
    树的顺序遍历
    ARTS打卡
    定位iOS代码中崩溃的位置
    leetcode 24
    leetcode 24
    Drafter简单介绍
  • 原文地址:https://www.cnblogs.com/ziliuziliu/p/5877182.html
Copyright © 2011-2022 走看看