衡水网站建设设计/百度做广告多少钱一天

衡水网站建设设计,百度做广告多少钱一天,莞城仿做网站,delphi 做直播网站原题: https://www.acwing.com/problem/content/3424/ 题目大意: A、B两人的数初始值均为0,他们轮流从X数组中取数,可以将该数与自己的数或对方的数进行异或操作,A先手,当X中的数被取完的时候谁的数大谁…

原题:

https://www.acwing.com/problem/content/3424/

题目大意: 

A、B两人的数初始值均为0,他们轮流从X数组中取数,可以将该数与自己的数或对方的数进行异或操作,A先手,当X中的数被取完的时候谁的数大谁赢。两人每次的操作都是最优的。判断最后是A赢还是B赢还是平局。

一般博弈的问题测试数据范围都比较大,所以肯定要找规律,找到必胜态和必败态

第一次做这种博弈问题,花了很长时间理解,所以记录一下/(ㄒoㄒ)/~~。

1. 怎样比较最终两人的数字的大小?

比较a、b两个二进制数的大小,可以从高位向低位逐位比较,当发现某一位数字不一样时,就可以判断a、b两数的大小关系。

所以本题要对a、b最后的结果从高到低逐位比较

由于a, b初始均为0,0与任何数异或结果还是这个数,所以最终a, b都是X中的一些数异或起来的结果,而对两个二进制数的某个对应位进行异或操作时不会影响到其他位,所以可以不管a, b最后的值具体是多少,直接从高到低逐位比较X数组中每个数。

例如,假设X = [1, 2, 3, 4, 5],就直接像下面这样从高到低一位一位地比较,直到找到能分出胜负的那一位:

2. 怎样分出胜负?

我们需要一位一位地看能不能分胜负。

异或运算时,0不能改变数,只有1才能改变。

以上面为例,这五个数中最高位有两个1,两个1能不能分胜负呢?

看上面的这张图,初始时a,b的这一位都是0,当有一个人选了1,a或b的这一位就会发生改变(把1异或给自己或者对方),从上图的(0,0)出发,沿着边走两次,要么还是(0, 0),要么变成(1, 1),所以这一位不能分出胜负。

其实我们也可以进一步看出,当这一位1有偶数个时,都不能分出胜负(从(0, 0)开始沿着边走偶数次还是走到这两位相同的地方)

当这一位的1有奇数个时:由于偶数个1的时候是平局,所以谁拿到最后一个1,谁就会赢(因为两人都采用最佳策略,所以可以根据现在的状态决定这个1给自己还是对方)。而谁能拿到最后那个1取决于0的个数

情况1:0有偶数个,例如:0 0 1 1 1,那么先手必胜,因为只要先拿走一个1,接下来后手就进入了一个双偶的局面,不管后手拿什么都拿和他一样的就行,都能拿到最后一个1

情况2:0有奇数个,例如:0 0 0 1 1 1,那么后手必胜,不管先手拿什么,都拿和他相反的,接下来就和上面类似,先手进入了双偶的局面,后手只要一直跟先手拿一致的就能赢

还要注意一个特殊情况就是1只有一个,这时候不管0有几个显然先手必胜。

总结一下:

若某一位上1一共有偶数个,则这一位分不出胜负,继续看下一位;

若某一位上1一共有奇数个,

当1有一个时,先手必胜;

当1不止一个时,若0有偶数个,则先手必胜;若0有奇数个,则后手必胜。

3. 用一个数组bits统计X中的数每一位上1的总个数

分析了胜负情况后,很自然地就要统计出每一位上所有Xi的1的个数,例如上面X = [1,2,3,4,5]的例子中,bits[0] = 3, bits[1] = 2, bits[3] = 2(从低位到高位统计)。

先定义一个函数处理单个数,之后再一个一个地处理,这段代码如下:

def get_bit(num):  # 处理单个数哪一位是1,并累加到bits里idx = 0  # 指示bits数组的索引while num:bit = num & 1  # num和1与一下,就能获得最低位是多少bits[idx] += bit # 这一位的值累加到bits数组对应的位上,可以得到1的个数num >>= 1  # 右移一位,处理num的更高一位idx += 1   # 索引加1

题目中Xi最大是2的20次方,也就是最多用21位表示,所以bits初始化为[0] * 21。

最后是我的ac code:

def get_bit(num):idx = 0while num:bit = num & 1bits[idx] += bitnum >>= 1idx += 1t = int(input())
for _ in range(t):tmp = list(map(int, input().split()))len_x = tmp[0]x = tmp[1:]bits = [0] * 21for xi in x:   # 统计Xi中的数每一位总共有几个1get_bit(xi)ans = 0for i in range(20, -1, -1):  # 从高到低比较,所以要倒序遍历if bits[i] % 2 == 0:  # 有偶数个1continueelse:       # 有奇数个1if bits[i] == 1:  # 有1个1ans = 1elif (len_x - bits[i]) % 2 == 0: # 有偶数个0ans = 1elif (len_x - bits[i]) % 2 == 1: # 有奇数个0ans = -1breakprint(ans)

思路参考:http://【寒假每日一题07 | 【蓝桥杯省赛】异或数列 StarryCoding.109】https://www.bilibili.com/video/BV1wr421s73c?vd_source=9c4a17fd87c2018d071c433adb917522

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

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

相关文章

高效编程指南:PyCharm与DeepSeek的完美结合

DeepSeek接入Pycharm 前几天DeepSeek的充值窗口又悄悄的开放了,这也就意味着我们又可以丝滑的使用DeepSeek的API进行各种辅助性工作了。本文我们来聊聊如何在代码编辑器中使用DeepSeek自动生成代码。 注:本文适用于所有的JetBrains开发工具&#xff0c…

项目中同时使用Redis(lettuce)和Redisson的报错

温馨提示:图片有点小,可以放大页面进行查看... 问题1:版本冲突 直接上图,这个错表示依赖版本不匹配问题,我本地SpringBoot用的是2.7,但是Redisson版本用的3.32.5。 我们通过点击 artifactId跟进去 发现它…

clickhouse安装路径

《ClickHouse安装路径指南》 大家好,今天我们将一起学习如何在电脑上找到和理解ClickHouse的安装路径。这将帮助学生、科研人员以及任何对数据库技术感兴趣的人更好地管理他们的数据查询工作。 ClickHouse是一款列式存储数据库管理系统(DBMS&#xff09…

时序数据库 InfluxDB 3.0 版本性能实测报告:写入吞吐量提升效果验证

亮点总结: TSBS 测试表明,对于少于 100 万台设备的数据集,InfluxDB OSS 3.0 的数据写入速度实际上比 InfluxDB OSS 1.8 更慢。 对于 100 万台及以上设备的数据集,InfluxDB OSS 3.0 的数据写入性能才开始超过 InfluxDB OSS 1.8。…

AS32X601双核锁步MCU技术优势分析

AS32X601是国科安芯公司研制的一系列基于32位RISC-V指令集车规级MCU处理器芯片。主频高达180MHz,支持双核锁步架构,基于软错误防护技术加持,显著提高芯片安全性能。产品具有高安全、低失效、多IO、低成本、抗辐照等特点。 一、功能安全与可靠…

基于 LeNet 网络的 MNIST 数据集图像分类

1.LeNet的原始实验数据集MNIST 名称:MNIST手写数字数据集 数据类型:灰度图 (一通道) 图像大小:28*28 类别数:10类(数字0-9) 1.通过torchvision.datasets.MNIST下载并保存到本地…

电池综合测试仪:科技赋能,精准守护能源安全

在当今这个科技日新月异的时代,电池作为众多电子设备的心脏,其性能的稳定与高效直接关系到设备的运行质量与使用安全。随着电动汽车、可穿戴设备、储能系统等领域的快速发展,对电池性能的检测与评估提出了更高要求。在此背景下,电…

实战案例分享:Android WLAN Hal层移植(MTK+QCA6696)

本文将详细介绍基于MTK平台,适配高通(Qualcomm)QCA6696芯片的Android WLAN HAL层的移植过程,包括HIDL接口定义、Wi-Fi驱动移植以及wpa_supplicant适配过程,涵盖STA与AP模式的常见问题与解决方法。 1. HIDL接口简介 HID…

Greenplum6.19集群搭建

一,安装说明 1.1环境说明 1、首先确定部署的环境,确定下服务器的端口,一般默认是22的端口; 2、当前这份文档是服务器处于10022端口下部署的(现场生产环境要求,22端口在生产环境存在安全隐患)&…

原生android 打包.aar到uniapp使用

1.原生安卓里面引入uniapp官方提供的包文件: uniapp-v8-release.aar 2.提供uniapp调用的接口,新建类文件继承UniModule, package com.dermandar.panoramal;import com.scjt.lib.certlib;import io.dcloud.feature.uniapp.annotation.UniJSM…

基于Spring Boot的高校就业招聘系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

deepseek 本地部署

deepseek 本地部署 纯新手教学,手把手5分钟带你在本地部署一个私有的deepseek,再也不用受网络影响。流畅使用deepseek!!! 如果不想看文章,指路:Deep seek R1本地部署 小白超详细教程 &#xff0…

HTML学习笔记(全)

基本结构 <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title></title> </head> <body></body> </html> 基本标签元素 标题&#xff08;heading&#xff09; <h1>一级标题</h1> &…

腾讯云对象存储服务(COS)

腾讯云对象存储服务&#xff08;COS&#xff09; 安全、可扩展、低成本的云存储解决方案 腾讯云 对象存储服务&#xff08;COS&#xff0c;Cloud Object Storage&#xff09; 是一种高可靠、高性能、可扩展的云存储服务&#xff0c;专为海量非结构化数据&#xff08;如图片、…

数字孪生对于新基建的价值浅析,算是抛砖引玉。

数字孪生&#xff08;Digital Twin&#xff09;作为一项融合物理世界与数字世界的关键技术&#xff0c;在新基建中扮演着虚实协同、智能决策、全生命周期管理的核心角色&#xff0c;其价值贯穿于基础设施的设计、建设、运维到优化全流程。 一、核心价值&#xff1a;虚实映射与智…

从零开始实现大语言模型(十三):预训练大语言模型GPTModel

1. 前言 使用梯度下降算法通过下一个token预测任务预训练大语言模型GPTModel&#xff0c;前向传播流程每次会输入一个batch的长度均为context_len的训练样本&#xff0c;执行 batch_size context_len \text{batch\_size}\times\text{context\_len} batch_sizecontext_len次下…

QWQ大模型评测榜单

评测榜单说明 在数学推理基准AIME24上&#xff0c;QwQ-32B达到了79.5分&#xff0c;几乎与DeepSeek-R1-617B的79.8分持平&#xff0c;远超OpenAI o1-mini的63.6分&#xff0c;及相同尺寸的R1蒸馏模型。 在编程能力方面&#xff0c;QwQ-32B 在LiveCodeBench上获得了63.4分&…

超图(Hypergraph)

超图&#xff08;Hypergraph&#xff09;是图结构学习&#xff08;Graph Learning&#xff09;中的一种扩展形式&#xff0c;它比传统图&#xff08;Graph&#xff09;更具表达能力&#xff0c;适用于建模复杂的多元关系。 超图是一种由 超节点&#xff08;Hypernodes&#xff…

鸿蒙生态日日新,夸克、顺丰速运、驾校一点通等多款应用功能更新

3月5日鸿蒙生态日日新PLOG&#xff1a;吉事办、健康甘肃等政务服务App上架原生鸿蒙应用市场&#xff1b;夸克、顺丰速运、驾校一点通等多款应用功能更新。

基于SpringBoot的智慧停车场小程序(源码+论文+部署教程)

运行环境 • 前端&#xff1a;小程序 Vue • 后端&#xff1a;Java • IDE工具&#xff1a;IDEA&#xff08;可自行选择&#xff09; HBuilderX 微信开发者工具 • 技术栈&#xff1a;小程序 SpringBoot Vue MySQL 主要功能 智慧停车场微信小程序主要包含小程序端和…