牛客周赛 Round 60(下)

构造序列

题目描述

登录—专业IT笔试面试备考平台_牛客网

运行代码

#include <iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
int main() {int n, m;cin >> n >> m;int minVal = min(n, m);int maxVal = max(n, m);cout << (n == m? 2 * minVal : 2 * minVal + 1);return 0;
}

代码思路

一、整体思路

  1. 首先从用户输入中读取两个整数 n 和 m,分别代表正数的数量和负数的数量。
  2. 然后使用 std::min 和 std::max 函数求出 n 和 m 中的较小值 minVal 和较大值 maxVal
  3. 根据 n 和 m 的关系计算最长序列的长度并输出。如果 n 和 m 相等,则最长序列长度为 2 * minVal;如果 n 和 m 不相等,则最长序列长度为 2 * minVal + 1

二、原理分析

  1. 确定最小和最大数量:通过求出 n 和 m 的最小值和最大值,可以方便地处理不同情况下的序列长度计算。如果 n 和 m 相等,那么最小数量和最大数量都是同一个值;如果 n 和 m 不相等,那么可以明确区分出较多的数和较少的数。

  2. 计算最长序列长度:当 n 和 m 相等时,正好可以完全交替排列正数和负数,每一对正数和负数组成长度为 2 的子序列,所以最长序列长度为 2 * minVal。当 n 和 m 不相等时,以 n > m 为例,先交替排列 m 个正数和 m 个负数,此时长度为 2 * m。然后还剩下 n - m 个正数,由于正数不能相邻,所以只能在最后再添加一个正数,这样最长序列长度就是 2 * m + 1,即 2 * minVal + 1。同理 m > n 时也一样。

连点成线

题目描述

登录—专业IT笔试面试备考平台_牛客网

运行代码

#include <iostream>
#include <climits>int main() {int n, m;std::cin >> n >> m;int xmax[n + 1] = {0};int xmin[n + 1];int ymax[n + 1] = {0};int ymin[n + 1];for (int i = 1; i <= n; ++i) {xmin[i] = INT_MAX;ymin[i] = INT_MAX;}int res = 0;for (int i = 0; i < m; ++i) {int x, y;std::cin >> x >> y;xmax[x] = std::max(xmax[x], y);xmin[x] = std::min(xmin[x], y);ymax[y] = std::max(ymax[y], x);ymin[y] = std::min(ymin[y], x);}for (int i = 1; i <= n; ++i) {res = std::max(res, std::max(xmax[i] - xmin[i], ymax[i] - ymin[i]));}std::cout << res;return 0;
}

代码思路

一、整体思路

  1. 首先读取棋盘大小 n 和棋子数量 m
  2. 初始化用于记录每行和每列最大和最小坐标值的数组。对于每一行,初始时将最小坐标值设为极大值 INT_MAX;对于每一列同理。
  3. 遍历 m 个棋子的坐标,对于每个棋子的坐标 (x, y):更新 x 行对应的最大纵坐标 xmax[x] 和最小纵坐标 xmin[x]。更新 y 列对应的最大横坐标 ymax[y] 和最小横坐标 ymin[y]
  4. 再次遍历从 1 到 n 的行和列索引:计算每行的最大长度为 xmax[i] - xmin[i],每列的最大长度为 ymax[i] - ymin[i],取其中的较大值。将这个较大值与当前最长连线长度 res 比较,取较大者更新 res
  5. 最后输出最长连线的长度 res

二、原理分析

  1. 数据结构的选择:使用数组 xmax[n + 1]xmin[n + 1]ymax[n + 1]ymin[n + 1] 分别记录每行的最大纵坐标、最小纵坐标、每列的最大横坐标、最小横坐标。这样可以方便地通过行或列的索引快速访问对应的最大和最小坐标值。选择 INT_MAX 作为初始值是因为它是一个很大的数,可以确保在后续的更新过程中,第一次遇到实际坐标值时能够正确地更新最小坐标值。

  2. 遍历棋子坐标:当读取到一个棋子的坐标 (x, y) 时,更新对应的行和列的最大和最小坐标值。这是因为如果两个棋子在同一行或同一列,那么它们之间可以连线,而连线的长度就是该行或该列上两个棋子纵坐标之差(对于行)或横坐标之差(对于列)。通过不断更新最大和最小坐标值,可以在后续计算中得到该行或该列上任意两个棋子之间的最大距离。

  3. 计算最长连线长度:在第二次遍历中,对于每一行和每一列,分别计算最大纵坐标与最小纵坐标之差以及最大横坐标与最小横坐标之差,取其中的较大值。这是因为连线的长度是由行或列上两个最远棋子之间的距离决定的,而这个距离可以通过最大和最小坐标值之差得到。不断更新 res,使其始终保持最长连线的长度。最后输出的 res 就是整个棋盘上最长连线的长度。

我们N个真是太厉害了

题目描述

登录—专业IT笔试面试备考平台_牛客网

运行代码

#include <iostream>
#include <vector>typedef long long i64;int main() {int t;std::cin >> t;while (t--) {int n;std::cin >> n;std::vector<int> c(n + 1, 0);for (int i = 1; i <= n; ++i) {int x;std::cin >> x;if (x <= n) c[x]++;}i64 sum = 0;bool found = false;for (int i = 1; i <= n; ++i) {if (!c[i] && sum < i) {std::cout << i << '\n';found = true;break;}sum += static_cast<i64>(c[i]) * i;}if (!found) std::cout << "Cool!\n";}return 0;
}

代码思路

一、整体思路

  1. 首先读取测试数据组数 t
  2. 对于每组测试数据:
    • 读取小朋友的数量 n
    • 创建一个大小为 n + 1 的向量 c,并初始化为全零,用于统计每个数字出现的次数。
    • 遍历输入的每个小朋友手中的小星星数量 x,如果 x 小于等于 n,则将 c[x] 的值加一,表示数字 x 出现了一次。
    • 初始化一个变量 sum 为 0,用于累计可以由小朋友手中星星组成的数字总和。
    • 从 1 到 n 遍历:如果当前数字 i 在向量 c 中对应的次数为 0(即 !c[i]),并且累计总和 sum 小于 i,说明找到了一个无法由小朋友手中星星组成的最小数字,输出该数字并设置 found 为 true,表示找到了答案。如果没有找到无法组成的数字,则将 c[i] 乘以 i 的值累加到 sum 中,表示将数字 i 出现的次数乘以其本身的值加到总和中。
    • 如果遍历完整个范围都没有找到无法组成的数字,则输出 "Cool!"

二、原理分析

  1. 统计数字出现次数

    • 使用向量 c 来统计每个数字在小朋友手中星星数量中出现的次数。这样可以快速确定某个数字是否存在以及出现的次数。
    • 只考虑小于等于 n 的数字,因为问题要求找到 n 以内无法组成的最小数字。
  2. 累计总和与判断

    • sum 变量用于累计可以由小朋友手中星星组成的数字总和。通过遍历从 1 到 n 的数字,检查是否存在某个数字无法由已有的星星数量组成。
    • 如果当前数字 i 在向量 c 中对应的次数为 0,说明这个数字没有出现在小朋友手中的星星数量中。同时,如果累计总和 sum 小于 i,那么就找到了一个无法组成的最小数字。
    • 例如,如果已经有数字 1 和 2,那么可以组成的数字总和为 3(1 + 2)。如果下一个数字 3 在向量 c 中对应的次数为 0,并且 sum(当前为 3)小于 4,那么就找到了无法组成的最小数字 4。
  3. 输出结果:如果找到了无法组成的数字,则输出该数字。如果遍历完整个范围都没有找到无法组成的数字,则输出 "Cool!",表示可以组成 n 以内的任意正整数。

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

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

相关文章

右值生命周期的延长

第一个例子&#xff1a; output&#xff1a; result&#xff08;&#xff09;创建了一个临时对象&#xff0c;它是一个右值&#xff0c;通过结果我们可以看到直到main函数结束时这个对象才调用了析构函数&#xff1b; result&#xff08;&#xff09;返回右值&#xff0c;我…

面向对象分析与设计-系统架构师(六十七)

1网络设计过程包括逻辑网络设计和物理网络设计两个阶段&#xff0c;下面的选项中&#xff0c;&#xff08;&#xff09;应该属于逻辑网络设计阶段的任务。 A选择路由协议 B设备选型 C结构化布线 D机房设计 解析&#xff1a; 物理网络设计的内容包括&#xff1a;设备选型、…

pdf去水印怎么去掉免费?6个pdf去除水印的方法快码住,超级好用!

pdf去水印怎么去掉免费&#xff1f;您是否有一些带有水印的pdf文档&#xff0c;让您感觉到头疼&#xff1f;您又是否希望能够去除这些水印&#xff0c;或者想用其他水印来替换现有的水印&#xff1f;如果是这样的话&#xff0c;我非常推荐您继续阅读本篇文章。本文将为您提供一…

Gateway网关的实现

API网关 网关路由必须支持负载均衡&#xff0c;服务列表是从注册中心拉取的客户端发出请求的URL指向的是网关&#xff0c;URL还必须要包含目标信息网关收到URL&#xff0c;通过一定的规则&#xff0c;要能识别出交给哪个实例去处理网关有能力对请求响应进行修改 引入依赖包 …

使用LangGPT提示词让大模型比较浮点数

使用LangGPT提示词让大模型比较浮点数 背景介绍环境准备创建虚拟环境安装一些必要的库安装其他依赖部署大模型启动图形交互服务设置提示词与测试 LangGPT结构化提示词 背景介绍 LLM在对比浮点数字时表现不佳&#xff0c;经验证&#xff0c;internlm2-chat-1.8b (internlm2-cha…

计算机视觉—3d点云数据基础

点云数据 3d点云数据由来 3d点云 3D Point Cloud是一种用于表示三维空间中对象或场景的数据结构。在最基础的形式中&#xff0c;它是一个包含多个三维坐标点&#xff08;X, Y, Z&#xff09;的集合。这些点是通过对实际物体或场景表面进行离散采样而获得的&#xff0c;因此&a…

代码随想录:动态规划4-5

42.接雨水 题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,…

python正则表达式如何不区分大小写

使用python的re模块做模式匹配时&#xff0c;有时需要忽略大小写&#xff0c;只需要在re.search()函数中添加参数re.IGNORECASE即可。 mystring some string pattern some pattern match re.search(pattern, mystring, re.IGNORECASE)

【Linux】理解和解释shell命令的工具

&#x1f41a;作者简介&#xff1a;花神庙码农&#xff08;专注于Linux、WLAN、TCP/IP、Python等技术方向&#xff09;&#x1f433;博客主页&#xff1a;花神庙码农 &#xff0c;地址&#xff1a;https://blog.csdn.net/qxhgd&#x1f310;系列专栏&#xff1a;C语言编程&…

2025年最新大数据毕业设计选题-Hadoop综合项目

选题思路 回忆学过的知识(Python、Java、Hadoop、Hive、Sqoop、Spark、算法等等。。。) 结合学过的知识确定大的方向 a. 确定技术方向&#xff0c;比如基于Hadoop、基于Hive、基于Spark 等等。。。 b. 确定业务方向&#xff0c;比如民宿分析、电商行为分析、天气分析等等。。。…

必备工具,AI生成证件照,再也不用麻烦他人,电子驾驶证等多种证件照一键生成

最近有一个生成证件照的开源项目很火&#xff0c;今天我们来学习一下。之前我生成证件照都是线下去拍照&#xff0c;线上使用也是各种限制&#xff0c;需要付费或看广告&#xff0c;而且效果也不是很理想&#xff0c; 今天要分享的这个 AI 证件照生成工具可以一键可以生成一寸…

深度学习之图像数据集增强(Data Augmentation)

文章目录 一、 数据增强概述二、python实现传统数据增强参考文献 一、 数据增强概述 数据增强&#xff08;Data Augmentation&#xff09;是一种技术&#xff0c;通过对现有数据进行各种变换和处理来生成新的训练样本&#xff0c;从而增加数据集的多样性和数量。这些变换可以是…

一文入门生成式AI(理解ChatGPT的原理)

一、什么是生成式AI&#xff1f; 以ChatGPT为代表的生成式AI&#xff0c;是对已有的数据和知识进行向量化的归纳&#xff0c;总结出数据的联合概率。从而在生成内容时&#xff0c;根据用户需求&#xff0c;结合关联字词的概率&#xff0c;生成新的内容。 可以这么联想&#x…

C++对象拷贝时的优化编译

在现代编译器中&#xff0c;当我们在 C中进行对象的拷贝操作时&#xff0c;编译器并非只是机械地执行逐字节的复制。相反&#xff0c;它会进行优化&#xff0c;避免不必要的拷贝构造等等&#xff0c;这种优化包括“返回值优化”&#xff08;RVO&#xff09;&#xff0c;“拷贝省…

电脑的主板,内存条插多少合适?

首先&#xff0c;不是插满4条内存就是最好的。 内存条插得多&#xff0c;确实可以扩充容量&#xff0c;提升性能。但是有些低端的主板配低端CPU&#xff0c;插满4条内存&#xff0c;稳定性下降。这里的稳定性包括供电&#xff0c;单独的内存供电容量等。此时CPU会通过降低内存…

Weapons Armor PBR Pack 1 - Fantasy RPG 武器护甲游戏模型

武器和护甲包#1有30个武器和护甲,每个对象都有默认外观,大多数都有网格变形和Substance Painter源文件,用于自定义纹理。 无限PBR&我的哲学 Infinity PBR是十几位艺术家的作品,他们都在做自己最擅长的事情。我想为独立游戏开发者制作最通用、最优质的资产,按照我希望的…

大数据新视界 --大数据大厂之数据驱动决策:如何利用大数据提升企业竞争力

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

MySQL之内置函数

目录 一&#xff1a;日期函数 二:字符串函数 三&#xff1a;数学函数 四&#xff1a;其他函数 一&#xff1a;日期函数 举例: (1) mysql> select current_date(); ---------------- | current_date() | ---------------- | 2024-09-17 | ---------------- 1 row …

了解云容器实例云容器实例(Cloud Container Instance)

1.什么是云容器实例&#xff1f; 云容器实例&#xff08;Cloud Container Instance&#xff0c; CCI&#xff09;服务提供 Serverless Container&#xff08;无服务器容器&#xff09;引擎&#xff0c;让您无需创建和管理服务器集群即可直接运行容器。 Serverless是一种架构理念…

中秋节程序员一般在干啥?

中秋节作为一个传统的中国节日&#xff0c;主要庆祝活动围绕着家庭团聚、赏月、吃月饼等文化习俗展开。然而&#xff0c;对于程序员这个职业群体来说&#xff0c;他们的中秋节活动可能因工作性质和个人安排而有所不同。但大致上&#xff0c;程序员在中秋节期间可能会有以下几种…