强化训练:day5(游游的you、腐烂的苹果、孩子们的游戏(圆圈中最后剩下的数)

文章目录

  • 前言
  • 1. 游游的you
    • 1.1 题目描述
    • 1.2 解题思路
    • 1.3 代码实现
  • 2. 腐烂的苹果
    • 2.1 题目描述
    • 2.2 解题思路
    • 2.3 代码实现
  • 3. 孩子们的游戏(圆圈中最后剩下的数)
    • 3.1 题目描述
    • 3.2 解题思路
    • 3.3 代码实现
  • 总结

前言

  本章内容:游游的you、腐烂的苹果、孩子们的游戏(圆圈中最后剩下的数)。

1. 游游的you

1.1 题目描述

在这里插入图片描述

1.2 解题思路

  这是一道简单的模拟题,我们只需要找打三个字符中最小的个数n,也就是意味最最多能组成n个you,再用o字符的总数减去这个n,就是剩余的o的个数,如果o的个数小于2,那么就没有意义,如果大于2,比如是2的话,结果就加1,如果是3的话,结果就加2,一次类推,只需要加上剩余o的个数再减一,就是最后的结果。

1.3 代码实现

#include <iostream>
using namespace std;
int main() {
    int q = 0;
    cin >> q;
    while (q--) 
    {
        int a, b, c;
        cin >> a >> b >> c;
        int ret = min(a, min(b, c)) * 2;
        int t = b - ret / 2;
        if (t < 2) cout << ret << endl;
        else cout << ret + t - 1 << endl;
    }
    return 0;
}

2. 腐烂的苹果

2.1 题目描述

在这里插入图片描述

2.2 解题思路

  一道基础的BFS的题目,借助队列将全部符合条件的值进行一次扩展,一直到队列为空结束。
  比如先循环一次,将所有符合条件的值入队列,然后从队列中一个一个取数据,进行扩展,将符合条件的结果再入队列,一直到队列为空为止。

2.3 代码实现

class Solution {
  public:
    int m, n;
    int dx[4] = {0, 0, 1, -1};
    int dy[4] = {1, -1, 0, 0};
    queue<pair<int, int>> q;
    bool vis[1001][1001];
    int ret;
    void bfs(vector<vector<int> >& grid) 
    {
        while (!q.empty()) {
            int sz = q.size();
            while (sz--) 
            {
                auto [a, b] = q.front();
                q.pop();
                for (int k = 0; k < 4; k++) 
                {
                    int x = a + dx[k], y = b + dy[k];
                    if (x >= 0 && x < m && y >= 0 && y < n && grid[x][y] == 1) {
                        grid[x][y] = 2;
                        q.push({x, y});
                    }
                }
            }
            ret++;
        }
    }
    int rotApple(vector<vector<int> >& grid) 
    {
// 第一次进去不算
        ret = -1;
        m = grid.size(), n = grid[0].size();
        for (int i = 0; i < m; i++)
            for (int j = 0; j < n; j++) 
            {
                if (grid[i][j] == 2) 
                {
                    q.push({i, j});
                }
            }
            
        bfs(grid);
        for (int i = 0; i < m; i++)
            for (int j = 0; j < n; j++) 
            {
                if (grid[i][j] == 1) 
                {
                    return -1;
                }
            }
        return ret;
    }
};

};

3. 孩子们的游戏(圆圈中最后剩下的数)

3.1 题目描述

在这里插入图片描述

3.2 解题思路

  这道题如果不考虑时空复杂度的限制,还是比较好写的,可以使用环形链表或者数组的方式进行解决,但是这个题要求了空间复杂度为O(1),那么这个方法就不行了。我们来通过画图来看一下这个过程:
在这里插入图片描述
  因此我们不难看出,求有n个人,最后获胜的是谁,实际上就是求有n-1个人最后获胜的是谁,……一直到n为1结束。而其中变化的仅仅只是下标,我们只需要找到删除元素与之前下标的映射关系即可。
在这里插入图片描述
  这实际上就变成了解决下标映射关系的问题。对于不太理解的小伙伴,可以画图来体会一下其中的过程,这个题我一开始也是没有写出来,还是看了题解并且画图了才勉强理解一些。
  对于这个过程不理解的,我强烈建议画图!!!画图!!!画图!!!重要的事情说三遍,而且在草稿本上画图比在电脑上画图方便多了,因此我是十分推荐通过画图来理解这个问题的。

3.3 代码实现

class Solution {
  public:
    int LastRemaining_Solution(int n, int m) 
    {
        int f = 0;
        for (int i = 2; i <= n; i++) f = (f + m) % i;
        return f;
    }
};

总结

  又是体会到画图的便捷性的一天……,画图是我们解决困难问题的一个非常强大的帮手,它能帮助我们仔细的观察到问题变化过程中的很多细节,比起我们只用大脑空想强的多。
  那么第五天的内容就到此结束了,如果大家发现有什么错误的地方,可以私信或者评论区指出喔。我会继续坚持训练的,希望能与大家共同进步!!!那么本期就到此结束,让我们下期再见!!觉得不错可以点个赞以示鼓励!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【03】JAVASE-分支语句【从零开始学JAVA】

Java零基础系列课程-JavaSE基础篇 Lecture&#xff1a;波哥 Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机&#xff0c;Java 仍是企业和开发人员的首选开发平台。…

Redis 服务等过期策略和内存淘汰策略解析

redis服务是基于内存运行的&#xff0c;所以很多数据都存放在内存中&#xff0c;但是内存又不是无限的&#xff0c;所以redis就引出了key的过期和淘汰策略。 一、Redis的过期策略&#xff1a; 我们在set key的时候&#xff0c;可以给它设置一个过期时间&#xff0c;比如expire …

Autosar MCAL-RH850P1HC Fls配置

文章目录 FlsFlsGeneralFlsAcLoadOnJobStartFlsBaseAddressFlsBlankCheckApiFlsCancelApiFlsCompareApiFlsCopySupportedFlsCriticalSectionProtectionFlsDevErrorDetectFlsDeviceNameFlsDriverIndexFlsFaciEccCheckFlsGetJobResultApiFlsGetStatusApiFlsLoopCountFlsReadImmed…

(待更)DRF: 序列化器、View、APIView、GenericAPIView、Mixin、ViewSet、ModelViewSet的源码解析

前言&#xff1a;还没有整理&#xff0c;后续有时间再整理&#xff0c;目前只是个人思路&#xff0c;文章较乱。 注意路径匹配的“/” 我们的url里面加了“/”&#xff0c;但是用apifox等非浏览器的工具发起请求时没有加“/”&#xff0c;而且还不是get请求&#xff0c;那么这…

大语言模型在研究领域的应用——信息检索中的大语言模型

信息检索中的大语言模型 大语言模型提升信息检索任务利用大语言模型进行信息检索大语言模型增强的信息检索模型. 检索增强的大语言模型输入优化策略.指令微调策略.预训练策略. 总结应用建议未来方向 大语言模型对于传统信息检索技术与应用范式带来了重要影响。这两者在技术路径…

【加密周报】中美下周有“大事”发生!准备联手引爆比特币大行情?美国大型养老基金和梅隆银行已持有比特币ETF!

自减半之后&#xff0c;比特币便进入了横盘状态&#xff0c;始终在6-6.5万美元价格区间震荡。4月24日&#xff0c;香港证监会官网正式公示虚拟资产现货ETF获批名单&#xff0c;华夏&#xff08;香港&#xff09;、嘉实国际、博时国际旗下相关产品均在其列&#xff0c;并计划将于…

K8s 使用 Ceph RBD 作为后端存储(静态供给、动态供给)

一、K8s 使用 Ceph RBD Ceph RBD&#xff08;Rados Block Device&#xff09;是 Ceph 存储集群中的一个重要组件&#xff0c;它提供了块级别的存储访问。RBD 允许用户创建虚拟块设备&#xff0c;并将其映射到客户端系统中&#xff0c;就像本地磁盘一样使用。 首先所有 k8s 节…

【算法学习】线段树基础版

一 线段树 1.概念 线段树可以理解为一个二叉树&#xff0c;如果是利用线段树求区间的和&#xff0c;那么每个结点的权值维护的是结点所维护区间的和&#xff0c;再将该区间一分为二&#xff0c;分别交由左右儿子维护。 拿区间1 - 4的和来举例子&#xff0c; 根结点维护的是区…

嵌入式Linux学习——Ubantu初体验

Ubuntu 和Windows 的最大差别 Windows中的每一个分区都对应着一个盘符&#xff0c;盘符下可以存放目录与文件&#xff0c;而在Ubantu中没有盘符的概念&#xff0c;只有目录结构。实际上不同的目录可能挂载在不同的分区之下&#xff0c;如果想要查看当前目录位于磁盘的哪个分区…

IDEA:运行 Tomcat 报错 “1099”

1、报错的结果 报错 就很明显啊 localhost:1099 端口号被使用了 2、报错原因 tomcat的端口已经被使用&#xff0c;与运行的起了冲突。强制结束项目&#xff0c;但端口号没有被释放短时间内频繁运行tomcat服务器。 3、解决方法 win R 输入 cmd 打开命令框 黑窗口输…

个人学习-前端相关(2):ECMAScript 6-箭头函数、rest、spread

ES6的箭头函数 ES6允许使用箭头函数&#xff0c;语法类似java中的lambda表达式 let fun1 function(){} //普通的函数声明 let fun2 ()>{} //箭头函数声明 let fun3 (x) >{return x1} let fun4 x >{return x1} //参数列表中有且只有一个参数&#xff0c;()可…

纯血鸿蒙APP实战开发——预渲染实现Web页面瞬开效果

介绍 为了便于大家在使用本案例集时能够更详细的了解各个案例&#xff0c;本案例基于Web预渲染实现了案例介绍功能&#xff0c;即应用右下角的问号icon。 效果图预览 使用说明 因为直接加载的线上README&#xff0c;因此本功能需联网使用点击icon&#xff0c;即会弹出对应案…

Docker容器部署overleaf

overleaf在线版限制很多&#xff0c;好在开源&#xff0c;准备在本地Docker部署&#xff0c;网上翻了翻&#xff0c;似乎本地部署并非易事&#xff0c;我也尝试了一下&#xff0c;发现直接使用docker-compose拉官方最新镜像部署的确问题很多&#xff0c;不过最终还是完美解决。…

如何借模板助力小程序开发

不论是奶茶店还是其他行业&#xff0c;想要开发小程序&#xff0c;乔拓云都为你提供了便捷的方案。无需复杂的编程技术&#xff0c;通过套用模板的方式&#xff0c;即可快速打造专属小程序。 在线访问乔拓云官方网站&#xff0c;免费注册账号后&#xff0c;即可进入商城小程序的…

C语言学习/复习36

一、程序的环境与预处理 二、翻译环境与执行环境 三、运行环境 四、预编译(预处理)详解

Docker从无到有

主要为windows下docker的安装与使用~ 初始Docker Docker理解 对于docker的加简介&#xff0c;我们可以官网获取它的概念&#xff0c;接下来就从什么是docker、为什么要使用docker以及它的作用来进行一个快速入门 前提&#xff1a;项目在发布时&#xff0c;不仅需要其jar包同…

Open-Sora 升级技术报告解读

最新功能概览 开源地址&#xff1a;https://github.com/hpcaitech/Open-Sora 技术报告&#xff1a;Open-Sora/docs/report_02.md at main hpcaitech/Open-Sora GitHub技术报告&#xff1a; 支持长视频生成&#xff1b;视频生成分辨率最高可达 720p&#xff1b;单模型支持任…

SOL跟单机器人是什么?

SOL跟单机器人是什么&#xff1f; 顾名思义&#xff0c;就是对方买什么我们买什么。。 solana跟单机器人&#xff0c;炒土狗新思路 跟聪明地址买入及卖出 1.跟随目标地址买入代币&#xff0c;比目标地址慢1-2秒内上链 2.上链稳定&#xff0c;采用jito路径&#xff0c;防止被夹 …

【视频打架行为数据集】打斗场景视频数据集简要介绍

一、UBI-Fight&#xff08;异常事件检测数据集&#xff09; 介绍 UBI-Fights 数据集是一个独特的全新大型数据集&#xff0c;涉及特定的异常检测并仍然在打斗场景中提供广泛的多样性&#xff0c;该数据集包含 80 小时的视频&#xff0c;在帧级别进行了完全注释。由 1000 个视…

三款数据可视化工具深度解析:Tableau、ECharts与山海鲸可视化

在数字化时代&#xff0c;数据可视化工具成为了企业和个人进行数据分析和决策的重要助手。市面上众多数据可视化工具各具特色&#xff0c;本文将为您介绍三款热门的数据可视化工具&#xff0c;帮助您更好地理解和利用数据。 首先&#xff0c;让我们来认识Tableau。Tableau是一款…