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

【广度优先搜索】【分类讨论】900. 最佳运动员的比拼回合

作者推荐视频算法专题本文涉及知识点广度优先搜索 分类讨论LeetCode : 1900. 最佳运动员的比拼回合n 名运动员参与一场锦标赛所有运动员站成一排并根据 最开始的 站位从 1 到 n 编号运动员 1 是这一排中的第一个运动员运动员 2 是第二个运动员依此类推。锦标赛由多个回合组成从回合 1 开始。每一回合中这一排从前往后数的第 i 名运动员需要与从后往前数的第 i 名运动员比拼获胜者将会进入下一回合。如果当前回合中运动员数目为奇数那么中间那位运动员将轮空晋级下一回合。例如当前回合中运动员 1, 2, 4, 6, 7 站成一排运动员 1 需要和运动员 7 比拼运动员 2 需要和运动员 6 比拼运动员 4 轮空晋级下一回合每回合结束后获胜者将会基于最开始分配给他们的原始顺序升序重新排成一排。编号为 firstPlayer 和 secondPlayer 的运动员是本场锦标赛中的最佳运动员。在他们开始比拼之前完全可以战胜任何其他运动员。而任意两个其他运动员进行比拼时其中任意一个都有获胜的可能因此你可以 裁定 谁是这一回合的获胜者。给你三个整数 n、firstPlayer 和 secondPlayer 。返回一个由两个值组成的整数数组分别表示两位最佳运动员在本场锦标赛中比拼的 最早 回合数和 最晚 回合数。示例 1输入n 11, firstPlayer 2, secondPlayer 4输出[3,4]解释一种能够产生最早回合数的情景是回合 11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11回合 22, 3, 4, 5, 6, 11回合 32, 3, 4一种能够产生最晚回合数的情景是回合 11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11回合 21, 2, 3, 4, 5, 6回合 31, 2, 4回合 42, 4示例 2输入n 5, firstPlayer 1, secondPlayer 5输出[1,1]解释两名最佳运动员 1 和 5 将会在回合 1 进行比拼。不存在使他们在其他回合进行比拼的可能。提示2 n 281 firstPlayer secondPlayer n广度优先搜索每轮的对号左边第i个和右边第i个组成第i对i∈ \in∈[0,(n1)/2]。对号相同必定只保留一人。注意最后一对可能只有一人轮空。性质一交换1号二号队员的位置结果不边。证明在一二号相遇前两队的结果一样保留一二号。等相遇的时候就结束了。性质二任何时刻将整个队伍倒置左边第i变成右边第i位结果不变。倒置后相同的操作结果也是倒置的故不影响一二号相遇。性质三不能只转置一号或二号。如1 , ⋆ ⋆ × × × 2 , ⋆ × × ⋆ × 1 ,\star\star\times \times \times 2,\star\times \times \star\times1,⋆⋆×××2,⋆××⋆×第一种情况最快3回合相遇第二种情况最快第二回合相遇。性质四队伍长度变化: n (n1)/2。用广度优先搜索解决不需要考虑重复状态因为比赛造成队伍长度都会变短。状态一二号队员在当前队伍的编号从左到右编号为[0,n)。计算两个队员的对号小的为i1,大的i2。枚举[0,i1)有i个队员保留(i1,i2)有i个队员保留。只需要考虑两种情况a一二号都在左侧右侧。b一二号不在同一册。代码核心代码classSolution{public:vectorintearliestAndLatest(intn,intfirstPlayer,intsecondPlayer){setpairint,intpre{{firstPlayer-1,secondPlayer-1}};vectorintvRet{0,0};for(intstep1;pre.size();step){setpairint,intdp;intnNewn-n/2;for(auto[fir,sec]:pre){boolbDiff(firnNew)^(secnNew);//是否一个在左边一个在右边#defineNO(a)(min(a,n-1-a))constinti1min(NO(fir),NO(sec));constinti2max(NO(fir),NO(sec));if(i1i2){if(0vRet[0]){vRet[0]step;}vRet[1]step;continue;}constintmidi2-i1-1;for(inti0;ii1;i){//枚举 fir 左边队员 赢的次数for(intj0;jmid;j){// 枚举 fir和 sec的竞争对手 之间队员赢的数量if(bDiff){dp.emplace(nNew-i-1,j(i1-i));}else{dp.emplace(i,i1j);}}}}pre.swap(dp);swap(n,nNew);}returnvRet;}};测试用例templateclassT,classT2voidAssert(constTt1,constT2t2){assert(t1t2);}templateclassTvoidAssert(constvectorTv1,constvectorTv2){if(v1.size()!v2.size()){assert(false);return;}for(inti0;iv1.size();i){Assert(v1[i],v2[i]);}}intmain(){intn11,firstPlayer2,secondPlayer4;{n5,firstPlayer1,secondPlayer4;autoresSolution().earliestAndLatest(n,firstPlayer,secondPlayer);Assert({2,2},res);}{n11,firstPlayer2,secondPlayer4;autoresSolution().earliestAndLatest(n,firstPlayer,secondPlayer);Assert({3,4},res);}{n5,firstPlayer1,secondPlayer5;autoresSolution().earliestAndLatest(n,firstPlayer,secondPlayer);Assert({1,1},res);}{n27,firstPlayer12,secondPlayer13;autoresSolution().earliestAndLatest(n,firstPlayer,secondPlayer);Assert({2,5},res);}}扩展阅读我想对大家说的话亲士工具箱支持AutoCad2013及以上工作中遇到的问题可以按类别查阅鄙人的算法文章请点击《算法与数据汇总》。学习算法按章节学习《喜缺全书算法册》大量的题目和测试用例打包下载。重视操作活到老学到老。明朝中后期大约50%的进士能当上堂官(副部及更高)能当上堂官的举人只有十余人。子墨子言之事无终始无务多业。也就是我们常说的专业的人做专业的事。视频课程先学简单的课程请移步CSDN学院听白银讲师也就是鄙人的讲解。https://edu.csdn.net/course/detail/38771如何你想快速形成战斗了为老板分忧请学习C#入职培训、C入职培训等课程https://edu.csdn.net/lecturer/6176测试环境操作系统win7 开发环境 VS2019C17或者 操作系统win10 开发环境 VS2022C17如无特殊说明本算法用**C**实现。

相关文章:

【广度优先搜索】【分类讨论】900. 最佳运动员的比拼回合

作者推荐 视频算法专题 本文涉及知识点 广度优先搜索 分类讨论 LeetCode : 1900. 最佳运动员的比拼回合 n 名运动员参与一场锦标赛,所有运动员站成一排,并根据 最开始的 站位从 1 到 n 编号(运动员 1 是这一排中的第一个运动员&#xff…...

【计网】什么是移动计算?中国Java之父余胜军被刷爆的CDN又是什么?

目录 一、移动计算 1. 理解移动计算 2. 应用实例 二、数据缓存和内容分发网络(CDN) 1. 数据缓存 2. 内容分发网络(CDN) 3. CDN与数据缓存的联系 三、余胜军开了个网站,说CDN被刷爆了,他是什么意思&…...

史上最全msys2下载配置操作步骤

史上最全msys2下载配置操作步骤一,MSYS2简介二,软件下载三,pacman配置四,总结!推荐参考B站视频:《3分钟搞定msys2的安装与配置》 一,MSYS2简介 面向Windows的软件分发与构建平台 MSYS2是一个…...

wow-iot 编码指南

项目地址&#xff1a;https://github.com/wow-iot3/wow_linux_eval 1、命名规则 &#xff08;1&#xff09;数据类型整数类型使用<stdint.h>内定义格式&#xff0c;约束为&#xff1a;int8_t/uint8_tint16_t/uint16_tint32_t/uint32_tint64_t/uint64_t&#xff08;2&…...

【大数据】分布式存储系统GFS与HDFS、高可用与高容错解析

目录 一、Chunk & Block 二、Master & Chunk Server&#xff1a;存储与计算的解耦&#xff1f; 1. 不准确&#xff01; 2. 调度与存储处理的解耦 解耦的具体含义 为什么这样设计&#xff1f; 3. NameNode & DataNode NameNode&#xff08;元数据管理&…...

PyCaret高性能计算:GPU加速训练指南

PyCaret高性能计算&#xff1a;GPU加速训练指南 【免费下载链接】pycaret An open-source, low-code machine learning library in Python 项目地址: https://gitcode.com/gh_mirrors/py/pycaret PyCaret是一个开源的低代码机器学习库&#xff0c;通过GPU加速功能可以显…...

pydata-book沟通技巧:如何向非技术人员解释数据分析结果

pydata-book沟通技巧&#xff1a;如何向非技术人员解释数据分析结果 【免费下载链接】pydata-book wesm/pydata-book: 这是Wes McKinney编写的《Python for Data Analysis》一书的源代码仓库&#xff0c;书中涵盖了使用pandas、NumPy和其他相关库进行数据处理和分析的实践案例和…...

从Swin到VMamba:视觉Transformer的效率革命

从Swin到VMamba&#xff1a;视觉Transformer的效率革命 【免费下载链接】VMamba 项目地址: https://gitcode.com/gh_mirrors/vm/VMamba 在计算机视觉领域&#xff0c;设计计算效率高的网络架构一直是持续的需求。随着视觉Transformer的发展&#xff0c;从Swin Transfor…...

终极SSH文件系统指南:sshfs如何让远程文件访问像本地一样简单

终极SSH文件系统指南&#xff1a;sshfs如何让远程文件访问像本地一样简单 【免费下载链接】sshfs File system based on the SSH File Transfer Protocol 项目地址: https://gitcode.com/gh_mirrors/ssh/sshfs sshfs是一款基于SSH文件传输协议的文件系统客户端&#xff…...

IEC 61850标准协议解读 5.基于Java的MMS实现 lec61850bean

专栏文章目录 第一章 IEC 61850标准协议解读 0.导言 第二章 IEC 61850标准协议解读 1.建模讲解 第三章 IEC 61850标准协议解读 2.基于Java的MMS实现 目录 专栏文章目录 前言 1 依赖库引入 2 创建服务端 3 创建客户端 4 读写模型 4.1 服务端读写 4.2 客户端读写 5.报告 6 文件服…...

wow-time时间操作说明

wow-time文件说明 项目地址&#xff1a;https://github.com/wow-iot3/wow_linux_eval本文件的功能主要用于处理时间操作&#xff0c;主要涉及时间信息获取(普通格式与cp56格式)、设置时间、格式转换、获取时间戳、获取毫秒数&#xff1b; 获取时间信息 int wow_time_get_cp56(C…...

探秘 ESCRCPY:一款高效便捷的无线屏幕镜像工具

探秘 ESCRCPY&#xff1a;一款高效便捷的无线屏幕镜像工具 【免费下载链接】escrcpy &#x1f4f1; Graphical Scrcpy to display and control Android, devices powered by Electron. | 使用图形化的 Scrcpy 显示和控制您的 Android 设备&#xff0c;由 Electron 驱动。 项目…...

100元打造便携显示器:PocketLCD完整物料清单与采购指南

100元打造便携显示器&#xff1a;PocketLCD完整物料清单与采购指南 【免费下载链接】PocketLCD 带充电宝功能的便携显示器 项目地址: https://gitcode.com/gh_mirrors/po/PocketLCD PocketLCD是一款带充电宝功能的便携显示器开源项目&#xff0c;让你花最少的成本拥有一…...

CGAL计算几何算法库完全指南:从入门到精通的终极教程

CGAL计算几何算法库完全指南&#xff1a;从入门到精通的终极教程 【免费下载链接】cgal The public CGAL repository, see the README below 项目地址: https://gitcode.com/gh_mirrors/cg/cgal CGAL&#xff08;Computational Geometry Algorithms Library&#xff09;…...

WHAT - 浏览器缓存机制系列(二)强缓存、协商缓存和启发式缓存

目录 一、介绍 二、强缓存 三、协商缓存 三、html & js 缓存策略 四、启发式缓存 启发式缓存什么时候发生 浏览器的推算规则 如果没有 Last-Modified DevTools 里怎么看出是启发式缓存 启发式缓存的风险 1. 浏览器行为不一致 2. 更新不可控 3. CDN 行为不同 总结 今天主要介…...

如何使用CoreRT:.NET Core终极AOT编译优化指南

如何使用CoreRT&#xff1a;.NET Core终极AOT编译优化指南 【免费下载链接】corert This repo contains CoreRT, an experimental .NET Core runtime optimized for AOT (ahead of time compilation) scenarios, with the accompanying compiler toolchain. 项目地址: https:…...

如何快速上手LedisDB:高性能NoSQL数据库的完整指南

如何快速上手LedisDB&#xff1a;高性能NoSQL数据库的完整指南 【免费下载链接】ledisdb A high performance NoSQL Database Server powered by Go 项目地址: https://gitcode.com/gh_mirrors/le/ledisdb LedisDB是一个由Go语言驱动的高性能NoSQL数据库服务器&#xff…...

mmdetection目标检测API封装:Python SDK开发全攻略

mmdetection目标检测API封装&#xff1a;Python SDK开发全攻略 【免费下载链接】mmdetection open-mmlab/mmdetection: 是一个基于 PyTorch 的人工智能物体检测库&#xff0c;支持多种物体检测算法和工具。该项目提供了一个简单易用的人工智能物体检测库&#xff0c;可以方便地…...

如何在Linux终端使用sc-im?新手入门的完整指南

如何在Linux终端使用sc-im&#xff1f;新手入门的完整指南 【免费下载链接】sc-im sc-im - Spreadsheet Calculator Improvised -- An ncurses spreadsheet program for terminal 项目地址: https://gitcode.com/gh_mirrors/sc/sc-im sc-im是一款功能强大的终端电子表格…...

TOMs插件生态系统:10个必装的官方认证扩展推荐

TOMs插件生态系统&#xff1a;10个必装的官方认证扩展推荐 【免费下载链接】TOMs TOMs is a fully open-source, high-performance, systematic, plugin-oriented, and scenario-agnostic general-purpose development framework. 项目地址: https://gitcode.com/gh_mirrors…...

探索未来桌面体验:AeroSpace Beta,专为Mac打造的高级窗口管理器

探索未来桌面体验&#xff1a;AeroSpace Beta&#xff0c;专为Mac打造的高级窗口管理器 【免费下载链接】AeroSpace AeroSpace is an i3-like tiling window manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ae/AeroSpace 在数字化的世界里&#xff0…...

如何快速入门Wireshark?Computer-Networking-A-Top-Down-Approach-NOTES实验教程

如何快速入门Wireshark&#xff1f;Computer-Networking-A-Top-Down-Approach-NOTES实验教程 【免费下载链接】Computer-Networking-A-Top-Down-Approach-NOTES 《计算机网络&#xff0d;自顶向下方法(原书第6版)》编程作业&#xff0c;Wireshark实验文档的翻译和解答。 项目…...

python-docx常见问题解答:新手必知的15个错误和解决方案

python-docx常见问题解答&#xff1a;新手必知的15个错误和解决方案 【免费下载链接】python-docx Create and modify Word documents with Python 项目地址: https://gitcode.com/gh_mirrors/py/python-docx python-docx是一个强大的Python库&#xff0c;用于创建和修改…...

智动群剪视频矩阵引

链接&#xff1a;https://pan.quark.cn/s/358832aed834智动群剪视频矩阵引擎&#xff0c;批量制作视频软件软件使用步骤&#xff1a;1.加入素材&#xff08;手动添加或复制素材到对应目录&#xff09; 2.勾选需要用到的素材 3.选择功能&#xff0c;修改数值 4.一键开始制作视频…...

AI变声器

链接&#xff1a;https://pan.quark.cn/s/fa61e826ee5e...

AI变声器+

链接&#xff1a;https://pan.quark.cn/s/9b9dd9ddd66d...

终极指南:Upspin核心架构完全解析——三大服务如何构建全球命名系统

终极指南&#xff1a;Upspin核心架构完全解析——三大服务如何构建全球命名系统 【免费下载链接】upspin Upspin: A framework for naming everyones everything. 项目地址: https://gitcode.com/gh_mirrors/up/upspin Upspin是一个创新的全球命名系统框架&#xff0c;旨…...

Slurm高级特性详解:QoS、资源限制与作业优先级配置指南

Slurm高级特性详解&#xff1a;QoS、资源限制与作业优先级配置指南 【免费下载链接】slurm Slurm: A Highly Scalable Workload Manager 项目地址: https://gitcode.com/gh_mirrors/sl/slurm Slurm作为一款高度可扩展的工作负载管理器&#xff0c;提供了强大的作业调度和…...

为什么我的电脑不能升级Windows 11?终极兼容性检测工具深度解析

为什么我的电脑不能升级Windows 11&#xff1f;终极兼容性检测工具深度解析 【免费下载链接】WhyNotWin11 Detection Script to help identify why your PC is not Windows 11 Release Ready. Now Supporting Update Checks! 项目地址: https://gitcode.com/gh_mirrors/wh/Wh…...

Gorilla技术播客系列:与AI先驱探讨函数调用的未来

Gorilla技术播客系列&#xff1a;与AI先驱探讨函数调用的未来 【免费下载链接】gorilla Gorilla: An API store for LLMs 项目地址: https://gitcode.com/gh_mirrors/go/gorilla Gorilla作为LLM的API商店&#xff0c;正在引领函数调用技术的革新。本播客系列邀请AI领域先…...