zoukankan      html  css  js  c++  java
  • BZOJ3668:[NOI2014]起床困难综合症——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=3668

    https://www.luogu.org/problemnew/show/P2114

    21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳。作为一名青春阳光好少年,atm一直坚持与起床困难综合症作斗争。通过研究相关文献,他找到了该病的发病原因: 在深邃的太平洋海底中,出现了一条名为drd的巨龙,它掌握着睡眠之精髓,能随意延长大家的睡眠时间。 正是由于drd的活动,起床困难综合症愈演愈烈, 以惊人的速度在世界上传播。为了彻底消灭这种病,atm决定前往海底,消灭这条恶龙。历经千辛万苦,atm终于来到了drd所在的地方,准备与其展开艰苦卓绝的战斗。drd有着十分特殊的技能,他的防御战线能够使用一定的运算来改变他受到的伤害。具体说来,drd的防御战线由n扇防御门组成。每扇防御门包括一个运算op和一个参数t,其中运算一定是OR,XOR,AND中的一种,参数则一定为非负整数。如果还未通过防御门时攻击力为x,则其通过这扇防御门后攻击力将变为x op t。最终drd受到的伤害为对方初始攻击力x依次经过所有n扇防御门后转变得到的攻击力。

    由于atm水平有限,他的初始攻击力只能为0到m之间的一个整数(即他的初始攻击力只能在 0, 1, … , m中任选,但在通过防御门之后的攻击力不受m的限制)。为了节省体力,他希望通过选择合适的初始攻击力使得他的攻击能让drd受到最大的伤害,请你帮他计算一下,他的一次攻击最多能使drd受到多少伤害。

    显然的贪心,对于二进制下的每一位考虑是否放1,从最高位开始放,这样就能保证最大化答案。

    判断是否放1那当然是用防御门挨个算就行啦。

    #include<cstdio>
    #include<cmath>
    #include<iostream>
    #include<vector>
    #include<cstring>
    #include<algorithm>
    #include<cctype>
    using namespace std;
    const int N=1e5+5;
    struct data{
        int op,k;
    }qry[N];
    char s[10];
    int n,m;
    int suan(int a){
        for(int i=1;i<=n;i++){
        if(qry[i].op==1)a&=qry[i].k;
        if(qry[i].op==2)a|=qry[i].k;
        if(qry[i].op==3)a^=qry[i].k;
        }
        return a;
    }
    int main(){
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++){
        scanf("%s%d",s,&qry[i].k);
        if(s[0]=='A')qry[i].op=1;
        if(s[0]=='O')qry[i].op=2;
        if(s[0]=='X')qry[i].op=3;
        }
        int ans=0;
        for(int i=32;i>=0;i--){
        if(ans+(1<<i)>m)continue;
        if(suan(ans)<suan(ans+(1<<i)))ans+=(1<<i);
        }
        printf("%d
    ",suan(ans));
        return 0;
    }

    +++++++++++++++++++++++++++++++++++++++++++

     +本文作者:luyouqi233。               +

     +欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+

    +++++++++++++++++++++++++++++++++++++++++++

  • 相关阅读:
    HTML5结构
    HTML5新增的非主体元素header元素、footer元素、hgroup元素、adress元素
    CF GYM 100703G Game of numbers
    CF GYM 100703I Endeavor for perfection
    CF GYM 100703K Word order
    CF GYM 100703L Many questions
    CF GYM 100703M It's complicate
    HDU 5313 Bipartite Graph
    CF 560e Gerald and Giant Chess
    POJ 2479 Maximum sum
  • 原文地址:https://www.cnblogs.com/luyouqi233/p/8494591.html
Copyright © 2011-2022 走看看