bzoj3668: [Noi2014]起床困难综合症

Posted invoid

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj3668: [Noi2014]起床困难综合症相关的知识,希望对你有一定的参考价值。

水题。

按位处理,复杂度O(nlogm)。真心好看。。。。。

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 100000 + 10;

int n,m,k,l,f1,f2,res;
char s[20];
int op[maxn],t[maxn];

inline int calc(int f,int i) {
    if(op[i]==1) f&=t[i];
    else if(op[i]==2) f|=t[i];
    else f^=t[i];
    return f;
}

void solve() {
    k=m; l=0;
    while(k) {k/=2; l++;};
    for(int i=l-1;i>=0;i--) {
        f1=(1<<i);
        f2=0;
        for(int j=1;j<=n;j++) {
            f1=calc(f1,j);
            f2=calc(f2,j);
        }
        f1&=(1<<i);
        f2&=(1<<i);
        if(f1>f2 && (res|(1<<i))<=m) res|=(1<<i);
    }
    for(int i=1;i<=n;i++) res=calc(res,i);
    printf("%d\n",res);
}


int main() {
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++) {
        scanf("%s%d",s,&t[i]);
        if(s[0]==A) op[i]=1;
        else if(s[0]==O) op[i]=2;
        else op[i]=3;
    }
    solve();
    return 0;
}

以上是关于bzoj3668: [Noi2014]起床困难综合症的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ_3668_[Noi2014]起床困难综合症_贪心

BZOJ3668:[NOI2014]起床困难综合症——题解

BZOJ3668: [Noi2014]起床困难综合症

[BZOJ3668] [Noi2014] 起床困难综合症 (贪心)

刷题BZOJ 3668 [Noi2014]起床困难综合症

bzoj3668: [Noi2014]起床困难综合症