牛客小白月赛101(上)

news2024/9/24 12:50:13

tb的区间问题

题目描述

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

运行代码

#include <iostream>
#include <climits>

using namespace std;

int main() {
    int n, k;
    cin >> n >> k;
    int arr[50000];
    for (int i = 0; i < n; ++i) {
        cin >> arr[i];
    }
    int sum = 0, maxSum = INT_MIN;
    int jud = n - k;
    for (int j = 0; j < n; ++j) {
        sum = 0;
        for (int i = 0; i < jud; ++i) {
            sum += arr[i + j];
        }
        maxSum = max(maxSum, sum);
    }
    cout << maxSum << endl;
    return 0;
}

代码思路

  1. 首先确定一个观察窗口的大小,这里用变量 jud 表示,其值为 n - k,即最终剩余的元素个数。
  2. 然后通过两层循环来遍历数组:
    • 外层循环 for (int j = 0; j < n; ++j) 用于确定起始位置,每次循环都会重新计算一个从当前起始位置开始长度为 jud 的子数组的和。
    • 内层循环 for (int i = 0; i < jud; ++i) 用于计算从当前起始位置 j 开始长度为 jud 的子数组的和,将子数组中的元素累加到 sum 变量中。
  3. 在每次内层循环结束后,更新 Maxsum 的值,使其始终保持为当前找到的最大子数组和。具体更新方式为 Maxsum = (sum > Maxsum)? sum : Maxsum;,即如果当前子数组和 sum 大于之前找到的最大子数组和 Maxsum,则更新 Maxsum 为 sum,否则保持 Maxsum 不变。
  4. 最后输出 Maxsum,即为经过 k 次操作后剩余数组元素之和的最大值。

tb的数数问题

题目描述

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

运行代码

#include <iostream>
#include <vector>

const int MAXN = 1000005;
const int MOD = 998244353;

using namespace std;

int n;
vector<bool> vis(MAXN, false);
vector<bool> isGood(MAXN, true);
int ans = 0;

void solve() {
    cin >> n;
    for (int i = 0; i < n; ++i) {
        int x;
        cin >> x;
        vis[x] = true;
    }
    if (vis[1]) {
        for (int i = 1; i <= MAXN - 1; ++i) {
            if (isGood[i] && vis[i]) {
                ans++;
            } else {
                for (int j = 2; i * j <= MAXN - 1; ++j) {
                    isGood[i * j] = false;
                }
            }
        }
    }
    cout << ans << endl;
}

int main() {
    solve();
    return 0;
}

代码思路

  1. 首先定义一些常量和变量:

    • MAXN表示可能的最大数字范围。
    • MOD在这段代码中似乎未被实际使用。
    • n表示集合的大小。
    • vis是一个布尔类型的向量,用于标记输入集合中出现的数字。
    • isGood是一个布尔类型的向量,用于标记每个数字是否可能是 “好的”。
    • ans用于统计 “好的” 数字的个数。
  2. 读取输入集合:

    • 通过cin >> n读取集合的大小。
    • 然后使用一个循环读取集合中的每个数字,并将其在vis向量中对应的位置标记为true
  3. 检查每个数字是否是 “好的”:

    • 首先检查数字1是否在集合中。如果数字1在集合中,才进行后续的判断。
    • 对于从1MAXN - 1的每个数字i
      • 如果isGood[i]truevis[i]也为true,说明数字i是 “好的”,将ans加一。
      • 如果数字i不是 “好的”,则对于所有i的倍数i * j(其中j >= 2i * j <= MAXN - 1),将isGood[i * j]标记为false,因为如果i不是 “好的”,那么它的倍数也不可能是 “好的”。
  4. 输出结果:最后输出ans,即 “好的” 数字的个数。

tb的排列问题

题目描述

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

运行代码

#include <iostream>
#include <vector>

const int mod = 998244353;

using namespace std;

void solve() {
    int n, w;
    cin >> n >> w;
    vector<int> b(n + 1);
    vector<int> P(n + 1, 0);
    vector<int> pre(n + 1, 0);
    for (int i = 1; i <= n; ++i) {
        int x;
        cin >> x;
        if (x!= -1) P[x] = i;
        pre[i] = pre[i - 1] + (x == -1? 1 : 0);
    }
    for (int i = 1; i <= n; ++i) cin >> b[i];
    long long ans = 1;
    int cnt = 0;
    for (int i = 1; i <= n; ++i) {
        int x = b[i];
        if (P[x]) {
            if (P[x] > (i + w)) {
                cout << "0\n";
                return;
            }
            continue;
        }
        ans *= (pre[min(n, i + w)] - cnt);
        ans %= mod;
        cnt++;
    }
    cout << ans << '\n';
}

int main() {
    int t;
    cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}

代码思路

  1. 输入与预处理

    • 首先读取输入的nw,分别表示排列的长度和幸运数字。
    • 然后创建三个向量:b用于存储给定的排列BP用于记录已知元素在最终可能的完整排列中的位置;pre用于记录从开始位置到当前位置的未知元素个数的前缀和。
    • 遍历输入的部分已知排列A,如果某个位置上的元素不是 -1,则将该元素在P中的对应位置记录为当前遍历的位置i。同时,计算pre向量,统计每个位置之前的未知元素个数。
  2. 主要计算过程

    • 初始化答案ans为 1,以及计数器cnt为 0。
    • 遍历给定的排列B
      • 如果当前元素在P中有记录,表示这个元素在部分已知排列A中是确定的位置。如果这个确定的位置大于当前位置i加上幸运数字w,说明无法得到这样的排列,输出 0 并返回。否则,继续处理下一个元素。
      • 如果当前元素在P中没有记录,表示这个位置在部分已知排列A中是未知的。此时,答案ans乘以在区间[i, min(i+w, n)]内的未知元素个数,即pre[min(n, i + w)] - cnt。然后更新计数器cnt,表示已经处理了一个未知位置。
  3. 输出结果:最后输出答案ans,即为可能的完整排列A的数量对998244353取模后的结果。

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

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

相关文章

HDL coder使用手册

&#x1f4a1; 由于本科毕设女朋友准备使用FPGA完成&#xff0c;因此写这篇文章帮助她快速上手HDL coder的使用&#xff0c;降低前期入门的难度。 支持生成HDL代码的simulink库 名字中含有HDL的库中的模块一般都可以用来生成HDL代码。直接搜索模块名称&#xff0c;比如搜索fir&…

SpringBoot整合InfluxDB(实战)

一、简单介绍InfluxDB是什么&#xff1f; InfluxDB是一个由InfluxData开发的开源时序型数据。它由Go写成&#xff0c;着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据&#xff0c;IoT行业的实时数据等场景。 1、主要特点 时间序列数据存储 专门…

网页跨域异常100%解决(谷歌浏览器)

目的&#xff1a; 1.开发过程中&#xff0c;经常出现浏览器提示跨域 2.原因新版本浏览器拦截跨域请求 3.错误关键消息如下&#xff1a; Access-Control-Allow-Origin cess to XMLHttpRequest at http://192.168.1.104:3080/api/Login/Store from origin http://yingyongliere…

sheng的学习笔记-AI-K-摇臂赌博机(K-armed bandit)

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 强化学习 sheng的学习笔记-AI-强化学习&#xff08;Reinforcement Learning, RL&#xff09;-CSDN博客 基础知识 单步强化学习任务 先考虑比较简单的情形&#xff1a;最大化单步奖赏&#xff0c;即仅考虑一步操作。需注意…

【LVIO-SLAM】 激光slam理论与实践

【LVIO-SLAM】 激光slam理论与实践 1. 激光slam理论与实践1.1 2D激光SLAM1.2 3D激光SLAM 2. 激光雷达运动畸变去除2.1 Lidar数学模型与点云去畸变2.2 运动畸变 3. 激光slam的前端配准3.1 帧间匹配3.2 3.2 ICP (Iterative Closest Point)3.3 PI-ICP (Point-to-Line Iterative Cl…

虚幻引擎游戏保存/加载存档功能

函数名功能Does Save Game Exist检查存档是否存在Load Game from Slot加载存档Save Game to Slot保存存档Delete Game in Slot删除存档 Slot Name 是插槽名字 存档都是通过插槽名字来 读取/加载/检查/删除的 先创建一个SaveGame类 , 这个类里可以存放要保存的数据 , 比如 玩家…

Unity Debug时出现请选择unity实例

Unity Debug时出现请选择unity实例 问题描述 出现请选择unity实例&#xff0c;并且选择框里为空。 出现原因 你打开了两个Unity工程&#xff0c;在附加时&#xff0c;不知道加在哪个Unity工程上。 解决方法 在调试窗口中点击“附加Unity调试程序”&#xff0c;然后在弹出…

Linux文件IO(三)-Linux系统如何管理文件

1.静态文件与 inode 文件在没有被打开的情况下一般都是存放在磁盘中的&#xff0c;譬如电脑硬盘、移动硬盘、U 盘等外部存储设备&#xff0c;文件存放在磁盘文件系统中&#xff0c;并且以一种固定的形式进行存放&#xff0c;我们把他们称为静态文件。 文件储存在硬盘上&#…

[000-002-01].第29节:MySQL执行流程

1、MySQL的查询流程&#xff1a; 客户端请求进入到数据库服务器后&#xff0c;先进行查询缓存&#xff0c;如果命中&#xff0c;那么就返回结果&#xff1b;如果没命中&#xff0c;进入到解析器&#xff0c;进行词法解析和语法解析&#xff0c;生成解析树&#xff1b;然后进入到…

Python在AI中的应用--使用决策树进行文本分类

Python在AI中的应用--使用决策树进行文本分类 文本分类决策树什么是决策树 scikit算法 使用scikit的决策树进行文章分类一个文本分类的Python代码使用的scikit APIs说明装入数据集决策树算法类类构造器&#xff1a; 构造决策树分类器产生输出评估输出结果分类准确度分类文字评估…

langchain介绍以及简单实用

1,介绍 LangChain是一个用于开发由大语言模型支持的应用程序的框架。它提供了大量组件来帮助我们构建LLM支持的应用程序。 其主要是有六大功能组成。 LLMs(大语言模型&#xff08;生成式语言模型&#xff09;)&#xff0c;Prompts(提示词)&#xff0c;Memory(记忆力)&#xff…

电器行业文件加密怎么做?防泄密哪种方法实用?

管控需求 1.电子文档&#xff08;源代码、设计图纸、设计方案等&#xff09;数据不同应用场景下如何有效保护&#xff1b; 2.发给第三方或外部单位的成果数据没有任何限制&#xff0c;对方可拷贝、篡改、截屏、盗用&#xff0c;严重损害单位的利益&#xff1b; 3.对员工出差…

基于单片机巡迹避障智能小车系统

文章目录 前言资料获取设计介绍设计程序具体实现截图设计获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们…

[Python学习日记-28] 开发基础练习1——股票查询程序

[Python学习日记-28] 开发基础练习1——股票查询程序 简介 题目及效果参考 源码与解析 简介 该练习使用了列表、字典、字符串等之前学到的数据类型&#xff0c;用于巩固实践之前学习的内容&#xff0c;题目当中使用到的数据均摘录与东方财富网&#xff0c;最好在学习完前面的…

【论文阅读】Grounding Language with Visual Affordances over Unstructured Data

Abstract 最近的研究表明&#xff0c;大型语言模型&#xff08;llms&#xff09;可以应用于将自然语言应用于各种各样的机器人技能。然而&#xff0c;在实践中&#xff0c;学习多任务、语言条件机器人技能通常需要大规模的数据收集和频繁的人为干预来重置环境或帮助纠正当前的…

USB总线同步数据采集卡6路高速模拟量采集带DIO功能USB2884/2885/2886

USB2884/2885/2886 数据采集卡 概述&#xff1a; 系统框图&#xff1a; 规格参数&#xff1a; 板卡外形图&#xff1a; 尺寸图及元器件功能说明&#xff1a;

图像识别OCR(Tess4J)

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

ZBrush入门使用介绍——16、ArrayMesh

大家好&#xff0c;我是阿赵。   继续介绍ZBrush的用法。这次看看ArrayMesh功能。   简单来说&#xff0c;ArrayMesh功能是可以复制很多个模型&#xff0c;然后根据路径排列。 一、 从阵列预设生成ArrayMesh 先把模型转换成多边形网格体 这时候&#xff0c;ArrayMesh的选…

jupyter安装与使用——Ubuntu服务器

jupyter安装与使用——Ubuntu服务器 一、安装miniconda3/anaconda31. 下载miniconda32. 安装miniconda33. 切换到bin文件夹4. 输入pwd获取路径5. 打开用户环境编辑页面6. 重新加载用户环境变量7. 初始化conda8.验证是否安装成功9.conda配置 二、安装jupyter2.1 conda安装2.2 配…

Java调用数据库 笔记05(查询篇)

一. 数据库&#xff08;通过各种驱动来实现调用&#xff09;&#xff1a; &#xff08;应用程序通过接口控制的各种数据库驱动来调用数据库-->jdbc方法&#xff09; 1.创建Java的普通class类 2.加载驱动 Class.forName("com.mysql.jdbc.Driver"); 3.驱动管理类…