zoukankan      html  css  js  c++  java
  • 【NOI2014】起床困难综合症 贪心

    从高到低按位贪心,讨论一下初始0或1,分别暴力算出结果是什么

    如果一开始0就能得1当然直接ans垒起来

    如果1能得1而且当前m够用,那也垒起来,同时m减掉

    否则gg

    2min的代码

     1 #include <bits/stdc++.h>
     2 #define miaom(x,y) ((x & (1<<y))>>y)
     3 using namespace std;
     4 int n,m,p[200001],a[60],in[60];
     5 char opt[200001];
     6 char getch()
     7 {
     8     char ch;
     9     for(ch=getchar();!isalpha(ch);ch=getchar());
    10     return ch;
    11 }
    12 int main()
    13 {
    14     scanf("%d%d",&n,&m);
    15     for(int i=1;i<=n;i++)
    16     {
    17         opt[i]=getch();
    18         getch();if(opt[i]!='O')getch();
    19         scanf("%d",&p[i]);
    20     }
    21     int ans=0;
    22     for(int i=30;i>=0;i--)
    23     {
    24         bool a=0,b=1;
    25         for(int j=1;j<=n;j++)
    26         if(opt[j]=='A')
    27             a&=miaom(p[j],i),
    28             b&=miaom(p[j],i);
    29         else
    30         if(opt[j]=='O')
    31             a|=miaom(p[j],i),
    32             b|=miaom(p[j],i);
    33         else
    34         if(opt[j]=='X')
    35             a^=miaom(p[j],i),
    36             b^=miaom(p[j],i);
    37         if(a) ans+=1<<i;
    38         else
    39         if(b && m>=1<<i) m-=1<<i,ans+=1<<i;
    40     }
    41     printf("%d
    ",ans);
    42     return 0;
    43 }
  • 相关阅读:
    课后作业一
    软工假期预习作业
    Spark2.0自定义累加器
    JAVA hashmap知识整理
    Spark 累加器
    RDD与DataFrame的转换
    Scala笔记整理
    Spark RDD
    Hbase的flush机制
    Spring源码-ImportSelector实现分析
  • 原文地址:https://www.cnblogs.com/wanglichao/p/6879894.html
Copyright © 2011-2022 走看看