从零学算法(LCR 187. 破冰游戏)

news2024/11/17 16:29:12

社团共有 num 为成员参与破冰游戏,编号为 0 ~ num-1。成员们按照编号顺序围绕圆桌而坐。社长抽取一个数字 target,从 0 号成员起开始计数,排在第 target 位的成员离开圆桌,且成员离开后从下一个成员开始计数。请返回游戏结束时最后一位成员的编号。
示例 1:
输入:num = 7, target = 4
输出:1
示例 2:
输入:num = 12, target = 5
输出:0

  • 我最后挣扎着理解一下:假设有 n 个人,每轮出局第 m 个人,我们把最终剩下的人的解定义为f(n),我们同时表示一下这个环为 0,1,2...n-2,n-1,而 f(n-1) 就是 0,1,2...n-3,n-2 的环每次出局第 m 个人。接下来试着找一下联系,当 f(n) 的环经过一轮删除后,由于 m 可能大于 n,所以实际上删除了环上 (m-1)%n 位上的数,它的下一位是 (m-1)%n + 1 = m%n - 1%n + 1 = m%n,(n 要是等于 1 你还找什么,所以 1%n 必定为 1),我们把 m%n 看做 t,删除的那位就是前一位即 t-1,此时的环可以用 t 表示成 t,t+1...0,1,...t-3,t-2,f(n) 删除一轮,不就变成了 f(n-1) 的问题了吗,那么我们一一对照 f(n-1) 的环和我们用 t 表示的 f(n) 删除一轮后的环
    请添加图片描述
  • 其实我们就找到了 f(n) 与 f(n-1) 之间的联系,假设 f(n-1) 的环上某个数字为 x,他可以递推得到 f(n) 删除后的环上对应的 x 为 (x+t)%n
    请添加图片描述
  • 或者说,知道 f(n-1),我们就知道了 f(n),我们带入 f(n) 和 f(n-1),可以得到 f(n)=(f(n−1)+t)%n,把 t 还原成 m%n,你就得到了 f(n)=(f(n−1)+m)%n,我们知道了状态定义和状态转移方程,还剩初始值,n 为 1,那最终剩下的恒为 0,即 dp[0] = 0,毕竟都不需要删除了,由于下一步的值只和上一步相关,所以也不需要定义 dp 数组了,用一个值滚动更新即可
  •   public int lastRemaining(int n, int m) {
      	  // f(1)
          int x = 0;
          // i 从 2 开始不断得到 f(2),f(3)...最终的 f(n)
          for (int i = 2; i <= n; i++) {
              x = (x + m) % i;
          }
          return x;
      }
    

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

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

相关文章

第五节 C++ 循环结构(算法)

文章目录 前言介绍1. for 语句1.1 语法结构1.2 语法流程的执行过程1.2.1 案例 1:循环的正序输入和倒序输入1.2.2 案例2 : 求1~n的平方数1.2.3 案例 3: 求输入a和b,求a~b区间数. 1.3 for 循环案例练习1.3.1 求最大值与最小值1.3.2 计算奇数和和偶数和1.3.3 计算平均气温与最高气…

day03_if_循环

今日内容 1.if.elseif 2.循环 3.控制关键词 复习 一 运算符算术,赋值,关系,逻辑,三目!,非,取反的作用boolean r !true; //falseboolean r2 !(1 > 0);// false 二 键盘录入1) 导包 import java.util.Scanner;2) 创建扫描器 Scanner scanner new Scanner(System.in);3) 调…

3.5 高速以太网

思维导图&#xff1a; 3.5.1 100BASE-T以太网 **3.5 高速以太网** 随着技术进步&#xff0c;以太网的传输速度不断增加。从早期的10 Mbit/s的速度&#xff0c;增长到了1 Gbit/s甚至更快。以下是一些关于高速以太网技术的简介。 **3.5.1 100BASE-T以太网** - **定义**&#…

信息系统项目管理师第四版学习笔记——项目沟通管理

管理基础 沟通模型的关键要素包括&#xff1a;编码、信息和反馈信息、媒介、噪声、解码。 在编制书面或口头信息的时候&#xff0c;应使用书面沟通的5C原则&#xff0c;以减轻理解错误&#xff1a;正确的语法和拼写(Correctness)、简洁的表述(Concise)、清晰的目的和表述(Cla…

传统工厂如何搭建蒸汽流量远程无线抄表系统?

一、应用背景 2021年国务院政府工作报告中指出&#xff0c;扎实做好碳达峰、碳中和各项工作&#xff0c;制定2030年前碳排放达峰行动方案&#xff0c;优化产业结构和能源结构&#xff0c;特别是近期煤炭价格上涨导致蒸汽价格大幅上涨&#xff0c;节能减排显得更加重要&#xf…

深度学习之微调

在现代深度学习领域&#xff0c;精细调整&#xff08;Fine-tune&#xff09;已经成为一种非常重要的技术手段。 预训练模型 在介绍finetune之前&#xff0c;先了解一下什么是预训练模型。在搭建一个网络模型来完成一个特定的图像分类的任务时&#xff0c;首先&#xff0c;需要…

ad5665r STM32 GD32 IIC驱动设计

本文涉及文档工程代码&#xff0c;下载地址如下 ad5665rSTM32GD32IIC驱动设计,驱动程序在AD公司提供例程上修改得到,IO模拟的方式进行IIC通信资源-CSDN文库 硬件设计 MCU采用STM32或者GD32,GD32基本上和STM32一样,针对ad566r的IIC时序操作是完全相同的. 原理图设计如下 与MC…

【C++ 】面向对象三大特性之封装和继承 详解

目录 0 引言1 封装1.1 封装是什么&#xff1f;1.2 封装的优缺点 2 继承2.1 继承的定义2.2 继承方式2.3 继承时名字遮蔽2.6 遮蔽、函数重写、函数重载的区别2.5 继承时的对象模型2.6 派生类与基类互相赋值原则2.6 继承时的构造函数和析构函数 &#x1f64b;‍♂️ 作者&#xff…

LeetCode二叉树OJ

目录 剑指 Offer 55 - I. 二叉树的深度 - 力扣&#xff08;LeetCode&#xff09; 965. 单值二叉树 - 力扣&#xff08;LeetCode&#xff09; 100. 相同的树 - 力扣&#xff08;LeetCode&#xff09; 101. 对称二叉树 - 力扣&#xff08;LeetCode&#xff09; 二叉树遍历_牛客题…

【网络编程】套接字编程——TCP通信

文章目录 一、简单的TCP网络程序1. 单进程版2. 多进程版3. 多线程版 二、线程池版TCP网络程序三、日志与守护进程1. 日志2. 守护进程进程组和会话的引出守护进程的创建 一、简单的TCP网络程序 1. 单进程版 &#x1f495; tcpServer.hpp #pragma once #include "err.hpp…

iPhone手机记笔记工具选择用哪个

iPhone手机大家应该都比较熟悉&#xff0c;其使用性能是比较流畅的&#xff0c;在iPhone手机上记录笔记可以帮助大家快速地进行总结工作、记录工作内容等&#xff0c;在iPhone手机上记笔记工具选择用哪个呢&#xff1f; 可以在iPhone手机上使用的笔记工具是比较多的&#xff0…

OPC UA客户端工具Softing OPC Client使用图文教程

简介 Softing OPC Client 是一个用于与 OPC (OLE for Process Control) 服务器进行通信的工具。下面是一个详细的图文教程&#xff0c;以帮助您使用 Softing OPC Client 进行 OPC 通信。 1. 下载和安装 Softing OPC Client 首先&#xff0c;您需要从 Softing 官方网站下载 S…

csgo饰品市场会崩盘吗?如何评价现在的csgo饰品市场?

如何评价现在的csgo市场&#xff1f; csgo饰品市场会崩盘吗&#xff1f;如何评价现在的csgo饰品市场&#xff1f; 如何来评价现在CSGO市场&#xff1f;哈喽&#xff0c;大家好&#xff0c;我是童话姐姐&#xff0c;那么从长远来看&#xff0c;我觉得这个CSGO市场它一定是呈现一…

渗透测试KAILI系统的安装环境(第八课)

KAILI系统的安装环境(第八课) Kaili是一款基于PHP7的高性能微服务框架&#xff0c;其核心思想是面向服务的架构&#xff08;SOA&#xff09;&#xff0c;支持http、websocket、tcp等多种通信协议&#xff0c;同时还提供了RPC、Service Mesh、OAuth2等功能。Kaili框架非常适合构…

c语言练习85:通讯录的实现(基于顺序表实现)

通讯录的实现(基于顺序表实现&#xff09; 基于动态顺序表实现通讯录 C语⾔基础要求&#xff1a;结构体、动态内存管理、顺序表、⽂件操作 1、功能要求 1&#xff09;⾄少能够存储100个⼈的通讯信息 2&#xff09;能够保存⽤⼾信息&#xff1a;名字、性别、年龄、电话、地址…

Android性能优化,可以从那些方面解决?方案一览

说到Android性能优化大家都很熟悉&#xff0c;这是一个老生畅谈的话题与技术。本篇讲讲Android性能优化需要学习那些&#xff0c;让这些技术做到极致。虽然老生常谈但是一直是一个合格的Android开发人员需要掌握的重点。要想进入大厂也是重要的敲门砖。 Android性能优化重要性…

【FreeRTOS】【STM32】02 FreeRTOS 移植

基于 [野火]《FreeRTOS%20内核实现与应用开发实战—基于STM32》 正点原子《STM32F429FreeRTOS开发手册_V1.2》 准备 基础工程&#xff0c;例如点灯 FreeRTOS 系统源码 FreeRTOS 移植 上一章节已经说明了Free RTOS的源码文件在移植时所需要的&#xff0c;FreeRTOS 为我们提供…

leetcode:1967. 作为子字符串出现在单词中的字符串数目(python3解法)

难度&#xff1a;简单 给你一个字符串数组 patterns 和一个字符串 word &#xff0c;统计 patterns 中有多少个字符串是 word 的子字符串。返回字符串数目。 子字符串 是字符串中的一个连续字符序列。 示例 1&#xff1a; 输入&#xff1a;patterns ["a","abc&…

AlGaN/GaN结构的氧基数字蚀刻

引言 宽带隙GaN基高电子迁移率晶体管(HEMTs)和场效应晶体管(fet)能够提供比传统Si基高功率器件更高的击穿电压和电子迁移率。常关GaN非常需要HEMT来降低功率并简化电路和系统架构&#xff0c;这是GaN HEMT技术的主要挑战之一。凹进的AlGaN/GaN结构是实现常关操作的有用选择之一…

使用IDEA自带功能将WSDL转java

好像IDEA2018版本之后不再支持webservice转java&#xff0c;可以下载2018.3.6版本的IDEA&#xff08;直接IDEA官网下载即可&#xff09;&#xff0c;然后打开一个项目&#xff0c;在根目录处单击右键 选择Generate Java Code From Wsdl...&#xff0c; 选择OK&#xff0c;即可…