AcWing 998. 起床困难综合症

news2024/9/28 13:25:14

原题链接

 

其实上面这一堆就是想说,输入 n,m以及 n 个数和该数所对应的运算,其中运算包括有 与、或、异或 三种,真正的问题就是在所有不大于 m 的数(非负数)中,对给定的 n 个数都按该数所对应的运算运算一遍后,能得到得最大的值是多少。

AND 表示按位与,OR 表示按位或,XOR 表示按位异或
 

 Accepted Code:

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
 
const int N=1e6+5;
int n,m;	//门的数量以及攻击力 
int t[N];	//运算的参数 
char str[4];	//存储输入的字符串 
int op[N];	//存储运算操作 
int ans;	//存储答案 
 
bool calc(bool x,int j) {
	for(int i=0;i<n;i++){
		if(op[i] == 1) x&=t[i]>>j&1; 
		else if(op[i] == 2) x|=t[i]>>j&1;
		else x^=t[i]>>j&1;
	}
	return x;
}//function:执行各种运算(
 
/*  因为该题的按位与、按位或、按位异或的每次运算只有关该位上的数字,不影响其他位置上的数字
    又因为C语言的结构特点我们可以从高位到低位来确定数的每一位*/
int main(){
	scanf("%d %d",&n,&m);
	
	for(int i=0;i<n;i++){
		scanf("\n%s %d",str,t+i);
		
        /*标记成整数形方便后续对应是什么运算*/
		if(*str=='A') op[i]=1;	//与运算 
		else if(*str=='O') op[i]=2;	  //或运算 
		else op[i]=3;	//异或运算 
	}
	
	for(int i=29;~i;i--){ 
		if(1<<i<=m){	//伤害不能超出范围 
			bool x=calc(0,i);   //该位填0的结果
			bool y=calc(1,i);   //该位填1的结果
            //哪个数值更大就填哪个
			if(x>=y)	ans|=x<<i;
			else ans|=y<<i,m-=1<<i; //(填1的话要让m减去该结果,为了后续只需要继续小等于m)
		}
		else ans|=calc(0,i)<<i; //超出范围了只能将该位置置为0
	}
	
	cout<<ans<<endl;
	
	return 0;
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1363778.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GFS论文解读(一)——设计概述

介绍 在当今大数据时代&#xff0c;分布式文件系统已经成为处理海量数据的重要工具。而在这个领域中&#xff0c;「GFS&#xff08;Google File System&#xff09;」论文无疑是一篇具有里程碑意义的文献。GFS 由 Google 公司发表于 2003 年&#xff0c;它介绍了 Google 公司内…

C练习——肇事卡车车牌号

题目&#xff1a; 一辆卡车违反交通规则&#xff0c;撞人后逃跑。现场有3人目击事件&#xff0c;但没有记住车牌号&#xff0c;只记住了车号的一些特征。 甲说&#xff1a;“牌照前两位数字是相同的”&#xff0c;乙说&#xff1a;“牌照的后两位数字是相同的&#xff0c;但与…

centos通过yum安装redis

1. 安装yum添加epel源(此步根据环境&#xff0c;如果有源则可跳过&#xff0c;在阿里去可跳过&#xff09; yum install epel-release 2 使用yum安装Redis yum install redis 出现如下图所示的内容 3 Redis配置 vim /etc/redis.conf :set number(显示行号) 61行&#x…

Flume基础知识(十一):Flume自定义接口

1&#xff09;案例需求 使用 Flume 采集服务器本地日志&#xff0c;需要按照日志类型的不同&#xff0c;将不同种类的日志发往不同的分析系统。 2&#xff09;需求分析 在实际的开发中&#xff0c;一台服务器产生的日志类型可能有很多种&#xff0c;不同类型的日志可能需要 发送…

在群晖NAS上搭建私有部署笔记软件——Blossom

一、Blossom 简介 Blossom 是一个需要私有部署的笔记软件&#xff0c;虽然本身定位是一个云端软件&#xff0c;但你仍然可以在本地部署&#xff0c;数据和图片都将保存在本地&#xff0c;不依赖任何的图床或者对象存储。 Blossom | Blossom (wangyunf.com)https://www.wangyun…

Zoho SalesIQ:提高品牌在社交媒体上参与度的实用指南

在当今快节奏的数字世界中&#xff0c;品牌参与度变得比以往任何时候都更加重要。社交媒体在企业与客户互动方面发挥着至关重要的作用&#xff0c;了解如何很好地利用社交媒体来增强品牌参与度至关重要。 正如我们在之前的博客中所了解到的&#xff0c;品牌参与是指在品牌与其…

企业数据库安全管理规范

1.目的 为规范数据库系统安全使用活动&#xff0c;降低因使用不当而带来的安全风险&#xff0c;保障数据库系统及相关应用系统的安全&#xff0c;特制定本数据库安全管理规范。 2.适用范围 本规范中所定义的数据管理内容&#xff0c;特指存放在信息系统数据库中的数据。 本…

原文件名自动编号方法:简单易懂的文件重命名规则

当处理大量文件时&#xff0c;例如图片、文档或其他类型的文件&#xff0c;经常要给它们重新命名&#xff0c;以便于管理和查找。一种常见的方法是使用自动编号&#xff0c;这样可以从001开始&#xff0c;一直编号到最后的文件。这种方法既简单又高效&#xff0c;且易于理解。下…

【读书】《白帽子讲web安全》个人笔记Ⅱ-1

目录 第二篇 客户端脚本安全 第2章 浏览器安全 2.1同源策略 2.2浏览器沙箱 2.3恶意网址拦截 2.4高速发展的浏览器安全 第二篇 客户端脚本安全 第2章 浏览器安全 近年来随着互联网的发展&#xff0c;人们发现浏览器才是互联网最大的入口&#xff0c;绝大多数用户使用互联…

UV机-理光G5六彩一白一光油配置

UV机-理光G5六彩一白一光油配置

【Navigation】global_planner 源码解析

全局规划器 global_planner 功能包 文章目录 global_planner 功能包结构1、plan_node.cpp2、planner_core.cpp3、astar.cpp4、dijkstra.cpp5、quadratic_calculator.cpp6、grid_path.cpp7、gradient_path.cpp8、orientation_filter.cpp全局规划大都基于静态地图进行规划,产生路…

加密的手机号如何模糊查询?

1 一次加载到内存 实现这个功能&#xff0c;我们第一个想到的办法可能是&#xff1a;把个人隐私数据一次性加载到内存中缓存起来&#xff0c;然后在内存中先解密&#xff0c;然后在代码中实现模糊搜索的功能。 这样做的好处是&#xff1a;实现起来比较简单&#xff0c;成本非常…

约数个数和约数之和算法总结

知识概览 约数个数 由算数基本定理 可得对于N的任何一个约数d&#xff0c;有 因为N的每一个约数和~的一种选法是一一对应的&#xff0c;根据乘法原理可得&#xff0c; 一个数的约数个数为 约数之和 一个数的约数之和公式为 多项式乘积的每一项为 正好对应的是一个数的每一个约…

计算机Java项目|Springboot疫情网课管理系统

项目编号&#xff1a;L-BS-ZXBS-07 一&#xff0c;环境介绍 语言环境&#xff1a;Java: jdk1.8 数据库&#xff1a;Mysql: mysql5.7 应用服务器&#xff1a;Tomcat: tomcat8.5.31 开发工具&#xff1a;IDEA或eclipse 二&#xff0c;项目简介 疫情网课也都将通过计算机…

jmeter线程组

特点&#xff1a;模拟用户&#xff0c;支持多用户操作&#xff1b;可以串行也可以并行 分类&#xff1a; setup线程组&#xff1a;初始化 类似于 unittest中的setupclass 普通线程组&#xff1a;字面意思 teardown线程组&#xff1a;环境恢复&#xff0c;后置处理

2.3 A VECTOR ADDITION KERNEL

我们现在使用矢量加法来说明CUDA C程序结构。矢量加法可以说是最简单的数据并行计算&#xff0c;是顺序编程中Hello World的并行等价物。在我们展示向量加法的内核代码之前&#xff0c;首先回顾传统的向量加法&#xff08;主机代码&#xff09;函数的工作原理是有帮助的。图2.5…

阿里云服务器Centos安装宝塔面板

阿里云服务器Centos安装宝塔面板 1 背景1.1 aliyun1.2 Linux 2 安装步骤2.0 环境配置2.1 安装前准备2.2 宝塔安装2.3 建站 3 centos常用命令3.1 防火墙相关 1 背景 1.1 aliyun 阿里云服务器是阿里云提供的一项云计算服务&#xff0c;它能够帮助用户快速搭建网站、应用和服务&…

专栏序言-GDB高级调试技巧实战

工欲善其事必先利其器&#xff01; GDB耍的溜&#xff0c;BUG找的快&#xff01; 在软件开发的世界里&#xff0c;调试是不可避免的。对于C/C开发者来说&#xff0c;GDB就是那把调试利器&#xff01;如果你只知道单步调试&#xff0c;那定位问题的速度肯定是龟速&#xff1b…

FSMC—扩展外部SRAM

一、SRAM控制原理 STM32控制器芯片内部有一定大小的SRAM及FLASH作为内存和程序存储空间&#xff0c;但当程序较大&#xff0c;内存和程序空间不足时&#xff0c;就需要在STM32芯片的外部扩展存储器了。STM32F103ZE系列芯片可以扩展外部SRAM用作内存。 给STM32芯片扩展内存与给…

Arduion Modbus通讯示例

实现了Arduion和Qt上位机利用Modbus协议采集DHT11数据&#xff0c;以及开关LED灯 软件界面&#xff1a; 实物界面&#xff1a; arduion下位机代码&#xff1a; #include <ModbusRtu.h> #include <DHT.h>#define DHTPIN 2 // DHT11连接到Arduino的数字引…