【笔试训练】day5

news/2024/5/17 12:42:30

今天的题,最后一题忘公式了,卡了一会推出来了

1、游游的you

在这里插入图片描述

思路:

看清题目意思就行,这里的相邻两个o可以重复算,也就是说,“ooo”算2分。
先算you的得分,再算oo
对了,不开long long见祖宗!

代码:

#include <iostream>
#include<algorithm>using namespace std;int main() {long long a, b, c;int t;cin >> t;while (t--) {cin >> a >> b >> c;long long ans = 0;int k = min(min(a, b), c);ans = k * 2;ans = ans + max((long long)b - k - 1, (long long)0);cout << ans << endl;}return 0;
}

2.腐烂的苹果
在这里插入图片描述

思路:

一眼bfs。
从好的苹果开始往外面扩展也可以,从坏的苹果往外扩展也可以。
我选后者。先将所有的坏苹果放在一个队列里,每次都一次性把队列里的元素全部取出来去“感染”。每一次都是一分钟。然后再把这次感染的苹果放回到队列里,用来下次感染就行。

代码:

#define _CRT_SECURE_NO_WARNINGS 1
typedef pair<int, int> PII;
int dx[] = { 0,0,-1,1 };
int dy[] = { -1,1,0,0 };
const int N = 1e3 + 10;
int g[N][N];
bool st[N][N];class Solution {
public:int bfs(vector<vector<int> >& grid) {int m = grid.size();int n = grid[0].size();int cnt = 0;//计算完好苹果的数量queue<PII> q;for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (grid[i][j] == 2) {q.push({ i,j });st[i][j] = true;}else if (grid[i][j] == 1)cnt++;}}int t = -1;//因为开始腐烂的苹果也会算时间,所以初始化为-1,自己手动模拟一下就知道了while (!q.empty()) {int sz = q.size();// cout<<sz<<endl;for (int i = 0; i < sz; i++) {auto it = q.front();q.pop();int x = it.first;int y = it.second;for (int j = 0; j < 4; j++) {int a = x + dx[j];int b = y + dy[j];if (a >= 0 && a < m && b >= 0 && b < n && !st[a][b] && grid[a][b] == 1) {g[a][b] = 2;cnt--;//每有一个好苹果被感染就-1q.push({ a,b });st[a][b] = true;}}}t++;//时间加1}if (cnt)return -1;return t;}int rotApple(vector<vector<int> >& grid) {return bfs(grid);}
};

3.孩子们的游戏

在这里插入图片描述

思路:

典型的约瑟夫环问题。注意题目要求空间复杂度为O(1),理论上来说也就意味着用队列,链表,数组的方法都是错的!
这里可以通过著名的递推公式去解决:
f(n,m)=(f(n-1,m)+m)%n
其中,f(n,m)表示剩下n个人除掉报数为m的人之后剩下的一个人的坐标。
举例:n=4,m=2.
从后往前推,当n==1时f(1,2)=0.
当n==2时,f(2,2)=(0+2)%2=0;
当n==3时,f(3,2)=(0+2)%3=2;
当n==4时,f(4,2)=(2+2)%4=0;
所以还有4个人的时候,把报2的人全部干掉,最后一个人的坐标就是0.
再将整个递归过程展开为循环,这样空间复杂度就是O(1)了(递归的参数也算空间复杂度)
这个公式很少考,记住就行,考场推比较浪费时间。我也是一个一个推,看规律得到的。

代码:


class Solution {
public:int f(int n, int m) {//递归公式if (n == 1)return 0;return (f(n - 1, m) + m) % n;}int LastRemaining_Solution(int n, int m) {int t=0;int ans=t;int c=1;for(int i=2;i<=n;i++){c++;t=(t+m)%c;}return t;}
};

http://www.mrgr.cn/p/21138257

相关文章

手动给docusaurus添加一个搜索

如果algolia不能自动配置的话,我教你手动给docusaurus添加一个搜索新版博客用docusaurus重构已经有些日子了,根据docusaurus的文档上也申请了Algolia,想一劳永逸的解决博客的搜索问题。但是流水有意,落花无情。 algolia总是不给我回复,我只能对着algolia的申请页面仰天长叹。…

python聊天室

python聊天室 文章目录 python聊天室chat_serverchat_client使用方式1.局域网聊天2.公网聊天 下面是一个简单的示例&#xff0c;包含了chat_client.py和chat_server.py的代码。 chat_server chat_server.py监听指定的端口&#xff0c;并接收来自客户端的消息&#xff0c;并将消…

MercadoLibre(美客多)入仓预约系统操作流程-自动化约号(开篇)

目录 一、添加货件信息 二、输入货件信息 三、选择发货 四、填写交货日期 五、注意事项 MercadoLibre&#xff08;美客多&#xff09;于2021年10月18号上线了新预约入仓系统&#xff0c;在MercadoLibre美客多平台上&#xff0c;新入仓预约系统是一项非常重要的功能&#x…

CTFHUB-技能树-Web前置技能-文件上传(前端验证—文件头检查)

CTFHUB-技能树-Web前置技能-文件上传&#xff08;前端验证—文件头检查&#xff09; 文章目录 CTFHUB-技能树-Web前置技能-文件上传&#xff08;前端验证—文件头检查&#xff09;前端验证—文件头检查题目解析 各种文件头标志 前端验证—文件头检查 题目考的是&#xff1a;pn…

利用Python进行数据分析 原书第2版 (Wes McKinney)pdf下载

链接:https://pan.baidu.com/s/18MOC0666S-EX_0ks4ivR2g 提取码:rmkk 本书由Python pandas项目创始人Wes McKinney亲笔撰写,详细介绍利用Python进行操作、处理、清洗和规整数据等方面的具体细节和基本要点。第2版针对Python 3.6进行全面修订和更新,涵盖新版的pandas、NumPy…

<计算机网络自顶向下> 多路复用与解复用

多路复用/解复用 端口号区分进程到进程多路解复用工作原理 解复用作用&#xff1a;TCP或者UDP实体采用哪些信息&#xff0c;将报文段的数据部分交给正确的socket&#xff0c;从而交给正确的进程主机收到IP数据报 每个数据报有源IP地址和目标地址每个数据报承载一个传输层报文段…

算法:期望场景;鲁棒优化

部分代码 for i1:T stst[D_DGk(i)*min_P_DG<P_DGk(i)<D_DGk(i)*max_P_DG]; end for i2:T indicatorD_DGk(i)-D_DGk(i-1); rangei:min(T,iT_up-1); st st[D_DGk(range)>indicator]; end for i2:T indicatorD_DGk(i-1)-D_DGk(i); rangei:min(T…

神经网络训练速度相关学习--1

2024-04-18 程序执行的调用顺序: cpu接收到指令,执行——从存储器中加载数据到cpu,对数据进行预处理——预处理后的数据传输gpu——gpu执行运算——将运算结果存储到存储器——开始新一轮batch运算(每一次计算都需要从内存中读取数据) 另外参考:先将硬盘中的数据读取到内…

LeetCode——572—— 另一棵树的子树

1.题目 . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/subtree-of-another-tree/ 给你两棵二叉树 root 和 subRoot …

08-接口文档和JWT

接口文档 楔子 接口文档对于协调前后端开发非常重要,可以避免因为开发习惯不同而导致的意外情况。在项目中,如果前后端开发各自为战,可能会出现不一致的情况。因此,接口文档可以约束双方,确保他们按照统一的规范进行开发,从而提高协同开发的效率和一致性。 规范 接口文档…

“趣”学架构

搭系统先搭架子 对于多个业务需求,都有打印入参、检验入参、业务逻辑、打印出参、处理异常的流程。 方法1:做业务逻辑的聚类 但内容经常不同,很难去做大范围的聚类 方法2:模版方法模式 用抽象类做约束,必须实现这些接口伪代码 弊端业务需求会导致代码经常多一个功能,改一…

Spring 源码阅读(一)环境搭建

注意事项:使用 2024-03-14 发布的 Spring 5.3.33 版本 IDE 工具使用了 Intellij IDEA,同时为了简化不必要的内容没单独配置 Gradle 环境 JDK 版本采用 Eclipse Temurin 1.8/11 均可下载源码 下载 SpringFramework 源码,本次选择 5.3.33 版本,发布日期 2024-03-14,通过 Int…

4.18作业

顺序栈&#xff1a; #include "seq_stack.h" seq_p creat_stack() //从堆区申请顺序栈的空间 {seq_p S(seq_p)malloc(sizeof(seq_stack));if(SNULL){printf("空间申请失败\n");return NULL;}bzero(S->data,sizeof(S->data));S->top-1;return S; …

性能测试——性能测试-常见linux性能指标监控命令

vmstat命令: top命令: free -h命令: df -h命令: mpstat命令: sar – 收集和报告系统活动

Apache Zeppelin 命令执行漏洞复现(CVE-2024-31861)

0x01 产品简介 Apache Zeppelin 是一个让交互式数据分析变得可行的基于网页的开源框架&#xff0c;Zeppelin提供了数据分析、数据可视化等功能&#xff0c; 0x02 漏洞概述 Apache Zeppelin 中代码生成控制不当&#xff08;“代码注入”&#xff09;漏洞。攻击者可以使用 She…

这个网络爬虫代码,拿到数据之后如何存到csv文件中去?

大家好,我是皮皮。 一、前言 还是昨天的那个网络爬虫问题,大佬们,帮忙看看这个网络爬虫代码怎么修改?那个粉丝说自己不熟悉pandas,用pandas做的爬虫,虽然简洁,但是自己不习惯,想要在他自己的代码基础上进行修改,获取数据的代码已经写好了,就差存储到csv中去了。 他的…

免费的 ChatGPT、GPTs、AI绘画(国内版)

&#x1f525;博客主页&#xff1a;白云如幻❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ ChatGPT3.5、GPT4.0、GPTs、AI绘画相信对大家应该不感到陌生吧&#xff1f;简单来说&#xff0c;GPT-4技术比之前的GPT-3.5相对来说更加智能&#xff0c;会根据用户的要求生成多种内容甚…

spring boot 集成rocketMq + 基本使用

1. RocketMq基本概念 1. NameServer 每个NameServer结点之间是相互独立&#xff0c;彼此没有任何信息交互 启动NameServer。NameServer启动后监听端口&#xff0c;等待Broker、Producer、Consumer连接&#xff0c; 相当于一个路由控制中心。主要是用来保存topic路由信息&#…

使用Java调用音乐开放API,并进行播放

使用Java调用音乐开放API&#xff0c;并进行播放 背景描述 电脑没有下载音乐软件&#xff0c;使用网页播放又不太方便&#xff0c;所有就想着使用Java语言直接调用音乐开放API&#xff0c;然后进行播放音乐。 具体代码如下&#xff0c;包含了注释 package com.lowkey.comple…