当前位置: 首页 > news >正文

bzoj3668[Noi2014]起床困难综合症

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3668

这种题目就要按位考虑!!!

lm不是m的最高位,而是m和各个参数的最高位。因为可能sum的那一位是0而能是答案是1。

(时间是平均水平两倍的代码如下……)

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=1e5+5,LM=31;
int n,m,lm,op[N],s[N][LM+5],sum,ans,b[2];
void init()
{
    int k=m,cnt=0;while(k)k>>=1,cnt++;lm=max(lm,cnt);
}
void solve(int i,int k)
{
    for(int j=1;j<=LM;j++)
    {
        if(k&1)s[i][j]=1;k>>=1;
        if(!k){lm=max(lm,j);break;}
    }
}
int main()
{
    scanf("%d%d",&n,&m);init();
    char ch[5];int tp;
    for(int i=1;i<=n;i++)
    {
        scanf("%s",ch);scanf("%d",&tp);solve(i,tp);
        if(ch[0]=='A')op[i]=1;if(ch[0]=='O')op[i]=2;if(ch[0]=='X')op[i]=3;
    }
    for(int t=lm;t;t--)
    {
//        printf("t=%d\n",t);
        b[0]=0;b[1]=1;
        for(int i=1;i<=n;i++)
        {
//            printf("op[%d]=%d s[%d][%d]=%d\n",i,op[i],i,t,s[i][t]);
            if(op[i]==1&&s[i][t]==0)b[0]=0,b[1]=0;
            else if(op[i]==2&&s[i][t]==1)b[0]=1,b[1]=1;
            else if(op[i]==3)b[0]^=s[i][t],b[1]^=s[i][t];
        }
//        printf("b[0]=%d b[1]=%d\n",b[0],b[1]);
        if(b[0])ans|=(1<<(t-1));
        else if(b[1]&&(sum|(1<<(t-1)))<=m)sum|=(1<<(t-1)),ans|=(1<<(t-1));
    }
    printf("%d",ans);
    return 0;
}

 

转载于:https://www.cnblogs.com/Narh/p/9167631.html

相关文章:

  • 《Oracle达人修炼秘籍:Oracle 11g数据库管理与开发指南 》一3.1 安装预处理
  • Spark读取mysql数据
  • OPM数据泄露:生物识别可以信任吗?
  • notepad++添加Compare插件
  • Python新型字符串格式漏洞分析
  • SQL优化|Java面试题
  • RFID技术并非大企业专用技术
  • Spring Cloud微服务分布式云架构 - spring cloud集成项目
  • Web性能优化:What? Why? How?
  • 使用ConcurrentMap实现高效可靠的原子操作
  • 岂止于大:大数据这个词已经过时了
  • mysql基本命令
  • 雅虎发布开源Web应用安全扫描器Gryffin
  • 正则表达式小知识点
  • 史上最贵的12个域名 360排名第一
  • 【个人向】《HTTP图解》阅后小结
  • 10个最佳ES6特性 ES7与ES8的特性
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • laravel5.5 视图共享数据
  • LeetCode算法系列_0891_子序列宽度之和
  • PHP 小技巧
  • React+TypeScript入门
  • tweak 支持第三方库
  • webgl (原生)基础入门指南【一】
  • Webpack 4 学习01(基础配置)
  • 如何设计一个比特币钱包服务
  • 如何用vue打造一个移动端音乐播放器
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 用element的upload组件实现多图片上传和压缩
  • 用Visual Studio开发以太坊智能合约
  • 自动记录MySQL慢查询快照脚本
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • Java总结 - String - 这篇请使劲喷我
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • #pragma once与条件编译
  • #每天一道面试题# 什么是MySQL的回表查询
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (待修改)PyG安装步骤
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (一)80c52学习之旅-起始篇
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)创业家杂志:UCWEB天使第一步
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .Net Remoting(分离服务程序实现) - Part.3
  • .net wcf memory gates checking failed
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • [] 与 [[]], -gt 与 > 的比较
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——
  • [BSGS算法]纯水斐波那契数列
  • [C++] 统计程序耗时
  • [Eclipse] 详细设置护眼背景色和字体颜色并导出
  • [hdu 3065] 病毒侵袭持续中 [AC自动机] [病毒特征码匹配]
  • [HITCON 2017]SSRFme perl语言的 GET open file 造成rce