牛客周赛 Round 60(下)

news2024/11/15 14:01:44

构造序列

题目描述

登录—专业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.coloradmin.cn/o/2142647.html

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

相关文章

如何解决“json schema validation error ”错误? -- HarmonyOS自学6

一. 问题描述 DevEco Studio工程关闭后&#xff0c;再重新打开时&#xff0c;出现了如下错误提示&#xff1a; json schema validation error 原因&#xff1a; index.visual或其他visual文件中的left等字段的值为负数时&#xff0c;不能以”-0.x“开头&#xff0c;否则就会…

了解华为云容器引擎(Cloud Container Engine)

1.什么是云容器引擎&#xff1f; 云容器引擎&#xff08;Cloud Container Engine&#xff0c;简称CCE&#xff09;提供高度可扩展的、高性能的企业级Kubernetes集群。借助云容器引擎&#xff0c;您可以在华为云上轻松部署、管理和扩展容器化应用程序。云容器引擎是一个企业级的…

【Android】使用Room数据库解决本地持久化

【Android】使用Room数据库解决本地持久化 Room概述 Room 是一个持久性库&#xff0c;属于 Android Jetpack 的一部分。 Room 是 SQLite 数据库之上的一个抽象层。Room 并不直接使用 SQLite&#xff0c;而是负责简化数据库设置和配置以及与数据库交互方面的琐碎工作。此外&a…

ElasticSearch-2-核心语法集群高可用实战-Week2

ES批量操作 1.批量获取文档数据 这里多个文档是指&#xff0c;批量操作多个文档&#xff0c;搜索查询文档将在之后的章节讲解 批量获取文档数据是通过_mget的API来实现的 (1)在URL中不指定index和type 请求方式&#xff1a;GET 请求地址&#xff1a;_mget 功能说明 &#…

数据结构 - 树与二叉树

一.普通有序树的定义 1.树的概念及特性 二.二叉树的定义 1.二叉树的性质 2.二叉树的分类 ①.满二叉树 每一层的结点数都为最大值 ②.完全二叉树 完全二叉树是由满二叉树&#xff0c;从下向上&#xff0c;从右向左依次擦除若干个结点 3.二叉树的结构 三.链式二叉树的创建 1.链式…

24-9-17-读书笔记(十八)-《契诃夫文集》(二)上([俄] 契诃夫 [译] 汝龙 )

文章目录 《契诃夫文集》&#xff08;二&#xff09;上&#xff08;[俄] 契诃夫 [译] 汝龙 &#xff09;目录阅读笔记记录总结 《契诃夫文集》&#xff08;二&#xff09;上&#xff08;[俄] 契诃夫 [译] 汝龙 &#xff09; 中秋夜&#xff0c;最近有些忙&#xff0c;看书的进度…

【PHP代码审计】PHP常见配置解析

&#x1f31d;博客主页&#xff1a;菜鸟小羊 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 php.ini配置文件 php函数禁用 disable_functions该选项可以设置哪些php函数是禁止使用的&#xff0c;重启生效&#xff0…

哪款宠物空气净化器能清除浮毛,希喂、米家、美的测评分享

要说市面上评价最为两极分化的家电产品&#xff0c;宠物空气净化器可以说是当仁不让了&#xff0c;几乎一半人说真香&#xff0c;另一半人却在吐槽鸡肋。 作为用过宠物空气净化器实测过市面上多个品牌多款宠物空气净化器产品的专业养宠测评博主&#xff0c;对宠物空气净化器这…

代码随想录:动态规划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,…

PyQt5-QCheckBox-开关按钮

效果预览 实现代码 from PyQt5.QtWidgets import QCheckBox, QApplication, QWidget, QVBoxLayout from PyQt5.QtCore import Qt, QRect, QPropertyAnimation, QEasingCurve, pyqtProperty from PyQt5.QtGui import QPainter, QColor, QPen, QFontclass CompactSwitchCheckbox…

PostgreSQL维护——解决索引膨胀和数据死行

注意&#xff1a; 本文内容于 2024-09-16 00:40:33 创建&#xff0c;可能不会在此平台上进行更新。如果您希望查看最新版本或更多相关内容&#xff0c;请访问原文地址&#xff1a;PostgreSQL维护——解决索引膨胀和数据死行。感谢您的关注与支持&#xff01; 我有一张表&#…

Python3网络爬虫开发实战(17)爬虫的管理和部署(第一版)

文章目录 一、 Scrapyd 分布式部署1.1 了解 Scrapyd1.2 准备工作1.3 访问 Scrapyd1.4 Scrapyd 的功能1.5 ScrapydAPI 的使用 二、Scrapyd-Client 的使用2.1 准备工作2.2 Scrapyd-Client 的功能2.3 Scrapyd-Client 部署 三、Scrapyd 对接 Docker3.1 准备工作3.2 对接 Docker 四、…

一款自动对杂乱文件进行整理和分类的AI工具--FileNeatAI

不知道大家有没有这样的痛点&#xff0c;面对自己的下载目录或者文档目录&#xff0c;总是下载了一堆文件&#xff0c;当某天看着这些文件夹想整理和分类的时候&#xff0c;又或者自己工作的时候&#xff0c;面对一堆工作上的文件&#xff0c;却不知道该分在那个分类里&#xf…

时序约束进阶三:Create_clock与Create_Generated_Clock详解

目录 一、前言 二、生成时钟 2.1 示例设计 2.2 主时钟约束 1&#xff09;约束对象解析 2&#xff09;约束到非时钟位置 2.3 生成时钟约束 1&#xff09;无约束 2&#xff09;倍频约束 3&#xff09;生成时钟的主时钟约束不正确 4&#xff09;使能时钟控制的约束 5&…

CI/CD持续集成和持续交付(git工具、gitlab代码仓库、jenkins)

目录 一 CICD是什么 1.1 持续集成&#xff08;Continuous Integration&#xff09; 1.2 持续部署&#xff08;Continuous Deployment&#xff09; 1.3 持续交付&#xff08;Continuous Delivery&#xff09; 二 git工具使用 2.1 git简介 2.2 git 工作流程 三 部署git …

[数据集][目标检测]车窗状态检测车窗开关检测数据集VOC+YOLO格式299张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;299 标注数量(xml文件个数)&#xff1a;299 标注数量(txt文件个数)&#xff1a;299 标注类别…

动态规划:07.路径问题_珠宝的最大价值_C++

题目链接&#xff1a;LCR 166. 珠宝的最高价值 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/description/ 一、题目解析 题目&#xff1a; 解析&#xff1a; 有过做前几道题的经验&#xff0c;我们会发现这道题其实就…

OpenAI o1——人工智能推理能力的飞跃,助力高级问题解决

前言 开放人工智能 新模型&#xff0c; OpenAI o1 或草莓&#xff0c;代表了 人工智能。它以 OpenAI 的 GPT 系列等先前模型为基础&#xff0c;并引入了增强的推理能力&#xff0c;从而加深了科学、编码和数学等各个领域的问题解决能力。与主要擅长处理和生成文本的前辈不同&a…

如何在win10Docker安装Mysql数据库?

1.拉取镜像 docker pull mysql 2.查看镜像 使用以下命令来查看是否已安装了 mysql镜像。 3.运行镜像 命令&#xff1a; docker run -p 3306:3306 --name mysql --restartalways --privilegedtrue \ -v /usr/local/mysql/log:/var/log/mysql \ -v /usr/local/mysql/data:/var…

AE电源HPG13150 400V Generator 手侧

AE电源HPG13150 400V Generator 手侧