热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

codeforces:C.EvenNumberAddicts【数学推理+博弈论】

目录题目截图题目摘要题目分析accode总结题目截图题目摘要Alice和Bob轮流在数组a中不放回地选数字,Alice先选如果Alice最终选的数字的总和是偶数&#

目录

  • 题目截图
  • 题目摘要
  • 题目分析
  • ac code
  • 总结


题目截图

在这里插入图片描述

题目摘要

Alice和Bob轮流在数组a中不放回地选数字,Alice先选
如果Alice最终选的数字的总和是偶数,那么Alice获胜
否则,Bob获胜

题目分析
  • 我们只需要考虑奇数和偶数出现的次数即可,设偶数出现a次,奇数出现b次,不妨设偶数为0,奇数为1
  • 一种简单的想法是,如果a % 2 = 0, 且b % 4 = 2, 那么bob总是能做alice的跟屁虫,和alice平分,最终alice获得b / 2个奇数,也就是2m + 1个奇数,和就是奇数,所以bob获胜

根据上述的分类,我们可以参照mod 4这个标准,进行分析

  • b % 4 = 2,bob要做alice的跟屁虫(alice选啥bob就选啥),如果alice选了最后一个0,没办法bob只能继续选1,但这不影响bob和alice最终平分1,也就是2m + 1个奇数,alice的和是奇数,bob胜
  • b % 4 = 3,参照上述情况,alice先选一个1使得b % 4 = 2,这样的话,bob就成了b % 4 = 2先选的,所以alice一定可以获得奇数个1,加上之前的第一个1,所以和就是偶数,alice胜
  • b % 4 = 0,alice先选一个0,之后alice做bob的跟屁虫,如果bob选了最后一个0,没办法alice只能继续选1,但这不影响bob和alice最终平分1,也就是2m个奇数,alice的和是奇数,alice胜
  • b % 4 = 1,如果alice和bob先选了1,就会转化为b % 4 = 0的情况,所以第一个选1的人后面将会选到偶数个1
    • 如果a % 2 = 1,bob会选到第一个1,那它接着会选到偶数个1,意味着bob选到的和是奇数,alice选到的和是偶数,alice胜
    • 如果a % 2 = 1,alice会选到第一个1,那它接着会选到偶数个1,意味着alice选到的和是奇数,bob胜

ac code

# -*- coding: utf-8 -*-
# @Time : 2022/10/4 23:17
# @Author : bridgekiller
# @FileName: 1738C.py
# @Software: PyCharm
# @Blog :bridge-killer.blog.csdn.netimport sysinput = sys.stdin.readline# 装饰器
# 解决带有参数和返回值函数的装饰器
# 类似aop的思想, 非侵入式地横切
# --------------------
def debug(func):def wrapper(*args, **kwargs):print('----------------')res = func(*args, **kwargs)print('----------------')return resreturn wrapper# --------------------# 装饰器,解决dfs爆栈问题
# --------------------
# 手写栈模板
# 克服py栈太浅的问题
from types import GeneratorTypedef bootstrap(f, stack=[]):def wrappedfunc(*args, **kwargs):if stack:return f(*args, **kwargs)else:to = f(*args, **kwargs)while True:if type(to) is GeneratorType:stack.append(to)to = next(to)else:stack.pop()if not stack:breakto = stack[-1].send(to)return toreturn wrappedfunc# --------------------def solve():n = int(input().strip())a = list(map(int, input().split()))odd, even = 0, 0for aa in a:if aa % 2 == 0:even += 1else:odd += 1if odd % 4 == 2:print('Bob')elif odd % 4 == 3:print('Alice')elif odd % 4 == 0:print('Alice')else:if even % 2 == 1:print('Alice')else:print('Bob')if __name__ == '__main__':for _ in range(int(input())):solve()

总结

在dp面前,数学就是降维打击~


推荐阅读
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 本文介绍了一个编程问题,要求求解一个给定n阶方阵的鞍点个数。通过输入格式的描述,可以了解到输入的是一个n阶方阵,每个元素都是整数。通过输出格式的描述,可以了解到输出的是鞍点的个数。通过题目集全集传送门,可以了解到提供了两个函数is_line_max和is_rank_min,用于判断一个元素是否为鞍点。本文还提供了三个样例,分别展示了不同情况下的输入和输出。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 如何优化Webpack打包后的代码分割
    本文介绍了如何通过优化Webpack的代码分割来减小打包后的文件大小。主要包括拆分业务逻辑代码和引入第三方包的代码、配置Webpack插件、异步代码的处理、代码分割重命名、配置vendors和cacheGroups等方面的内容。通过合理配置和优化,可以有效减小打包后的文件大小,提高应用的加载速度。 ... [详细]
  • tcpdump 4.5.1 crash 深入分析
    tcpdump 4.5.1 crash 深入分析 ... [详细]
  • 颜色迁移(reinhard VS welsh)
    不要谈什么天分,运气,你需要的是一个截稿日,以及一个不交稿就能打爆你狗头的人,然后你就会被自己的才华吓到。------ ... [详细]
  • R语言拼接字符串_paste的用法说明
    这篇文章主要介绍了R语言拼接字符串_paste的用法说明,具有很好的参考价值,希望对大家有所帮助。一 ... [详细]
  • 在本教程中,我们将看到如何使用FLASK制作第一个用于机器学习模型的RESTAPI。我们将从创建机器学习模型开始。然后,我们将看到使用Flask创建AP ... [详细]
author-avatar
手机用户2602919063
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有