当前位置: 首页 > news >正文

2025牛客寒假算法营2

A题

知识点:模拟

打卡。检查给定的七个整数是否仅包含 1,2,3,5,6 即可。为了便于书写,我们可以反过来,检查这七个整数是否不为 4 和 7。 时间 O(1);空间 O(1)。

 

#include <bits/stdc++.h>
using namespace std;signed main() {bool flag = true;for (int i = 1; i <= 7; i++) {int x;cin >> x;if (x == 4 || x == 7) {flag = false;}}cout << (flag ? "YES" : "NO") << "\n";
}



B题

 

#include <bits/stdc++.h>
using namespace std;signed main() {int n;cin >> n;vector<int> in(n + 1);for (int i = 1; i <= n; i++) {cin >> in[i];}sort(in.begin(), in.end());cout << in[n / 2 + 1] - 1 << "\n";
}



G题

 

#include <bits/stdc++.h>
using namespace std;using i64 = long long;
const i64 inf = 1e18;signed main() {int Task = 1;for (cin >> Task; Task; Task--) {int n, m;cin >> n >> m;i64 Min = 1e18, ans, now = 1;for (int i = 1; i <= 32; i++) {if (now >= inf / m) break;now *= m;if (abs(n - now) < Min) {Min = abs(n - now);ans = i;}}cout << ans << '\n';}
}



F题

 

#include <bits/stdc++.h>
using namespace std;using i64 = long long;signed main() {int Task = 1;for (cin >> Task; Task; Task--) {i64 l, r;cin >> l >> r;cout << (r - l + 1) << "\n";}
}

 




J题

 

 

#include <bits/stdc++.h>
using namespace std;signed main() {int n, h, m;cin >> n >> h >> m;string Date = to_string(h) + "-";if (m < 10) {Date += "0" + to_string(m);}else {Date += to_string(m);}set<string> A, B, C;while (n--) {string user, date, time;cin >> user >> date >> time;if (date.substr(0, 7) != Date) {continue;}string h = time.substr(0, 2);if (h == "07" || h == "08" || time == "09:00:00" ||h == "18" || h == "19" || time == "20:00:00") {A.insert(user);}if (h == "11" || h == "12" || time == "13:00:00") {B.insert(user);}if (h == "22" || h == "23" || h == "00" || time == "01:00:00") {C.insert(user);}}cout << A.size() << " " << B.size() << " " << C.size() << "\n";
}



D题

 

 

#include <bits/stdc++.h>
using namespace std;signed main() {int n;string s;cin >> n >> s;s = "#" + s;int ans = 0;for (int ch = 0; ch < 26; ch++) {int pre = 0, net = 0;for (int i = 1; i <= n; i++) {if (s[i] - 'a' != ch) continue;if (pre != 0) {ans = max(ans, n - i + 1);}pre = i;}for (int i = n; i >= 1; i--) {if (s[i] - 'a' != ch) continue;if (net != 0) {ans = max(ans, i);}net = i;}}cout << (ans == 1 ? 0 : ans) << "\n";
}

代码的核心思路是针对每个小写字母,分别正向和反向遍历字符串,找出该字母至少出现两次时的最长连续子串长度,最后取所有字母对应的最长长度作为可爱度。不过要注意,此代码实现与题目要求的可爱度定义可能存在差异,因为它仅考虑了单个字母的情况,而没有对所有可能的子串和不连续子序列进行检查。

例子 1

5
ababa
  • 分析过程
    • 代码开始遍历每个小写字母。当 ch 为 'a' 时:
      • 正向遍历
        • 第一次遇到 'a' 在位置 1,此时 pre 从 0 变为 1
        • 第二次遇到 'a' 在位置 3,此时 pre 不为 0,计算 n - i + 1 = 5 - 3 + 1 = 3,更新 ans 为 3
        • 第三次遇到 'a' 在位置 5,计算 n - i + 1 = 5 - 5 + 1 = 1ans 保持为 3
      • 反向遍历
        • 第一次遇到 'a' 在位置 5net 从 0 变为 5
        • 第二次遇到 'a' 在位置 3,此时 net 不为 0,计算 i = 3ans 保持为 3
        • 第三次遇到 'a' 在位置 1,计算 i = 1ans 保持为 3
    • 当 ch 为 'b' 时:
      • 正向遍历
        • 第一次遇到 'b' 在位置 2pre 从 0 变为 2
        • 第二次遇到 'b' 在位置 4,此时 pre 不为 0,计算 n - i + 1 = 5 - 4 + 1 = 2ans 保持为 3
      • 反向遍历
        • 第一次遇到 'b' 在位置 4net 从 0 变为 4
        • 第二次遇到 'b' 在位置 2,此时 net 不为 0,计算 i = 2ans 保持为 3
    • 最终 ans 为 3,输出结果为 3

例子 2

3
abc
  • 分析过程
    • 当 ch 为 'a' 时:
      • 正向遍历:只在位置 1 遇到 'a'pre 变为 1,但由于只出现一次,不会更新 ans
      • 反向遍历:同理,也不会更新 ans
    • 当 ch 为 'b' 时:
      • 正向遍历:只在位置 2 遇到 'b',不会更新 ans
      • 反向遍历:不会更新 ans
    • 当 ch 为 'c' 时:
      • 正向遍历:只在位置 3 遇到 'c',不会更新 ans
      • 反向遍历:不会更新 ans
    • 对于其他字母也都只出现一次。最终 ans 为 0,输出结果为 0

例子 3

4
aaaa
  • 分析过程
    • 当 ch 为 'a' 时:
      • 正向遍历
        • 第一次遇到 'a' 在位置 1pre 变为 1
        • 第二次遇到 'a' 在位置 2,此时 pre 不为 0,计算 n - i + 1 = 4 - 2 + 1 = 3,更新 ans 为 3
        • 第三次遇到 'a' 在位置 3,计算 n - i + 1 = 4 - 3 + 1 = 2ans 保持为 3
        • 第四次遇到 'a' 在位置 4,计算 n - i + 1 = 4 - 4 + 1 = 1ans 保持为 3
      • 反向遍历
        • 第一次遇到 'a' 在位置 4net 变为 4
        • 第二次遇到 'a' 在位置 3,此时 net 不为 0,计算 i = 3ans 保持为 3
        • 第三次遇到 'a' 在位置 2,计算 i = 2ans 保持为 3
        • 第四次遇到 'a' 在位置 1,计算 i = 1ans 保持为 3
    • 对于其他字母都未出现。最终 ans 为 3,输出结果为 3



K题

 

#include <bits/stdc++.h>
using namespace std;
// 定义长整型别名,在某些涉及较大整数运算时可使用
#define i64 long long
// 定义上下左右四个方向在 x 轴上的偏移量
int dx[4] = {-1, 1, 0, 0};
// 定义上下左右四个方向在 y 轴上的偏移量
int dy[4] = {0, 0, -1, 1};// 解决问题的核心函数
void solve() {int n, m;// 读取矩阵的行数 n 和列数 mcin >> n >> m;// 定义一个字符串向量 s 来存储矩阵,索引从 1 开始,方便后续处理vector<string> s(n + 1);for (int i = 1; i <= n; i++) {// 读取每一行的字符串cin >> s[i];// 在每行字符串前添加一个字符 '%',使得字符串索引从 1 开始s[i] = "%" + s[i];}// 用于存储每个蓝色极大连通块对应的需要敲碎的灰色砖块数量,初始大小为 m * n + 1vector<int> g(m * n + 1);// 记录当前蓝色极大连通块的编号int idx = 0;// 二维布尔数组 v,用于标记矩阵中每个位置是否已被访问过vector<vector<bool>> v(n + 1, vector<bool>(m + 1, false));// 二维数组 num,记录每个蓝色砖块所属的蓝色极大连通块编号vector<vector<int>> num(n + 1, vector<int>(m + 1, 0));// 定义一个递归的 lambda 函数 dfs,用于深度优先搜索蓝色极大连通块auto dfs = [&](auto &&self, int x, int y, int id) -> void {// 标记当前位置 (x, y) 的蓝色砖块属于编号为 id 的连通块num[x][y] = id;// 标记当前位置已被访问v[x][y] = true;for (int i = 0; i < 4; i++) {// 计算相邻位置的 x 坐标int nx = dx[i] + x;// 计算相邻位置的 y 坐标int ny = dy[i] + y;// 检查相邻位置是否在矩阵范围内、未被访问且为蓝色砖块if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && !v[nx][ny] && s[nx][ny] == '1') {// 递归调用 dfs 函数继续搜索相邻的蓝色砖块self(self, nx, ny, id);}}};// 遍历矩阵中的每个位置for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {// 如果当前位置未被访问且为蓝色砖块if (!v[i][j] && s[i][j] == '1') {// 蓝色极大连通块编号加 1++idx;// 调用 dfs 函数开始搜索该连通块dfs(dfs, i, j, idx);}}}// 再次遍历矩阵,统计每个蓝色极大连通块周围的灰色砖块数量for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {if (s[i][j] == '0') {// 用于记录当前灰色砖块相邻的不同蓝色极大连通块编号map<int, bool> ex;for (int k = 0; k < 4; k++) {// 计算相邻位置的 x 坐标int nx = i + dx[k];// 计算相邻位置的 y 坐标int ny = j + dy[k];// 检查相邻位置是否在矩阵范围内、为蓝色砖块且该连通块编号未被记录过if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && s[nx][ny] == '1' && !ex[num[nx][ny]]) {// 对应连通块的需要敲碎的灰色砖块数量加 1g[num[nx][ny]]++;// 标记该连通块编号已被记录ex[num[nx][ny]] = true;}}}}}// 对存储每个连通块对应灰色砖块数量的向量 g 进行排序,排序范围是从索引 1 到 idxsort(g.begin() + 1, g.begin() + idx + 1);// 输出需要敲碎的最少灰色砖块数量cout << g[1];
}int main() {// 关闭输入输出流的同步,提高输入输出效率ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t = 1;// 循环调用 solve 函数,这里 t 为 1,即只调用一次while (t--) solve();return 0;
}

 

相关文章:

2025牛客寒假算法营2

A题 知识点&#xff1a;模拟 打卡。检查给定的七个整数是否仅包含 1,2,3,5,6 即可。为了便于书写&#xff0c;我们可以反过来&#xff0c;检查这七个整数是否不为 4 和 7。 时间 O(1)&#xff1b;空间 O(1)。 #include <bits/stdc.h> using namespace std;signed main()…...

编译Android平台使用的FFmpeg库

目录 前言 一、编译环境 二、搭建环境 1.安装MSYS2 2.更新系统包 2.1 打开MSYS2 MinGW 64-bit终端&#xff08;mingw64.exe&#xff09; 2.2 更新所有软件包到最新版本 2.3 安装必要的工具和库。 3. 克隆FFmpeg源码 4. 配置编译选项 5. 执行编译 总结 前言 记录学习…...

【C++高并发服务器WebServer】-2:exec函数簇、进程控制

本文目录 一、exec函数簇介绍二、exec函数簇 一、exec函数簇介绍 exec 函数族的作用是根据指定的文件名找到可执行文件&#xff0c;并用它来取代调用进程的内容&#xff0c;换句话说&#xff0c;就是在调用进程内部执行一个可执行文件。 exec函数族的函数执行成功后不会返回&…...

力扣707题(2)——设计链表

#题目 #3,5和6的代码 今天看剩下几个题的代码&#xff0c;1,2,4的代码已经在上篇博客写过了想看的小伙伴移步到&#xff1a; 力扣707题——设计链表-CSDN博客 //第3题头插法 void addAtHead(int val){ //记录头结点ListNode nhead; //新节点的创建,并让它指向原本头结点的后…...

K8S中ingress详解

Ingress介绍 Kubernetes 集群中&#xff0c;服务&#xff08;Service&#xff09;是一种抽象&#xff0c;它定义了一种访问 Pod 的方式&#xff0c;无论这些 Pod 如何变化&#xff0c;服务都保持不变。服务可以被映射到一个静态的 IP 地址&#xff08;ClusterIP&#xff09;、一…...

SpringBoot打包为JAR包或WAR 包,这两种打包方式在运行时端口将如何采用?又有什么不同?这篇文章将给你解惑

你们好,我是金金金。 前提 SpringBoot打包方式:不是jar就是war包 场景 写这篇文章也是我遇到一个很不理解的点,所以就去研究了一下 场景如下: 这是后端生产配置文件给项目设置的端口,然后我前端写的url是:我就很纳闷,前端写了域名以及后端服务上下文路径,咋没写端口呢,…...

zabbix6.0安装及常用监控配置

文章目录 部署zabbix-serverzabbix监控节点部署解决zabbix中文乱码创建主机组创建模版配置主机与模版关联 监控boot分区监控网卡流量出网卡流量监控进入和出的总流量监控内存监控服务器端口用户自定应监控key值 (监控mysql查询数量)zabbix触发器监控cpu监控入网卡流量 邮件告警…...

SQL-leetcode—1179. 重新格式化部门表

1179. 重新格式化部门表 表 Department&#xff1a; ---------------------- | Column Name | Type | ---------------------- | id | int | | revenue | int | | month | varchar | ---------------------- 在 SQL 中&#xff0c;(id, month) 是表的联合主键。 这个表格有关…...

JavaWeb 学习笔记 XML 和 Json 篇 | 020

今日推荐语 愿你遇见好天气,愿你的征途铺满了星星——圣埃克苏佩里 日期 学习内容 打卡编号2025年01月23日JavaWeb笔记 XML 和 Json 篇020 前言 哈喽&#xff0c;我是菜鸟阿康。 以下是我的学习笔记&#xff0c;既做打卡也做分享&#xff0c;希望对你也有所帮助…...

在Raspbian上,如何获取树莓派的CPU当前频率

本文不用汇编实现&#xff0c;因为我是要用在 Go 里的&#xff0c;Go 并不支持内联汇编&#xff0c;要用汇编比较麻烦。而且项目并不是很在意性能&#xff0c;所以直接用命令获取内核准备好的。 在Raspbian上&#xff0c;CPU 信息存放在/sys/devices/system/cpu/中&#xff0c…...

网络打印机的搜索与连接(一)

介绍 网络打印机就是可以通过网络连接上的打印机&#xff0c;这类打印机分2种&#xff1a;自身具有互联网接入功能可以分配IP的打印机我们称为网络打印机、另外一种就是被某台电脑连接上去后通过共享的方式共享到网络里面的我们称为共享打印机。现在还有一种可以通过互联网连接…...

LangChain + llamaFactory + Qwen2-7b-VL 构建本地RAG问答系统

单纯仅靠LLM会产生误导性的 “幻觉”&#xff0c;训练数据会过时&#xff0c;处理特定知识时效率不高&#xff0c;缺乏专业领域的深度洞察&#xff0c;同时在推理能力上也有所欠缺。 正是在这样的背景下&#xff0c;检索增强生成技术&#xff08;Retrieval-Augmented Generati…...

【自然语言处理(NLP)】介绍、发展史

文章目录 介绍发展史1. 规则驱动时期&#xff08;20世纪50年代-80年代&#xff09;技术特点标志性成果 2. 统计方法兴起&#xff08;1990年代-2000年代&#xff09;技术特点标志性成果 3. 神经网络复兴&#xff08;2010年代初至今&#xff09;技术特点标志性成果 4. 集成与应用…...

1.CSS的三大特性

css有三个非常重要的三个特性&#xff1a;层叠性、继承性、优先级 1.1 层叠性 想通选择器给设置想听的样式&#xff0c;此时一个样式就会覆盖&#xff08;层叠&#xff09;另一个冲突的样式。层叠性主要是解决样式冲突的问题。 <!DOCTYPE html> <html lang"en&…...

【分布式日志篇】从工具选型到实战部署:全面解析日志采集与管理路径

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…...

基于springcloud汽车信息分析与可视化系统

基于Spring Cloud的汽车信息分析与可视化系统是一款旨在整合、分析汽车相关数据并以直观可视化方式呈现的应用系统。 一、系统架构 该系统基于先进的Spring Cloud架构构建&#xff0c;充分利用其分布式、微服务特性&#xff0c;确保系统具备高可用性、可扩展性和灵活性。Spri…...

TOGAF之架构标准规范-信息系统架构 | 数据架构

TOGAF是工业级的企业架构标准规范&#xff0c;信息系统架构阶段是由数据架构阶段以及应用架构阶段构成&#xff0c;本文主要描述信息系统架构阶段中的数据架构阶段。 如上所示&#xff0c;信息系统架构&#xff08;Information Systems Architectures&#xff09;在TOGAF标准规…...

Databend x 沉浸式翻译 | 基于 Databend Cloud 构建高效低成本的业务数据分析体系

「沉浸式翻译」是一个非常流行的双语对照网页翻译扩展工具&#xff0c;用户可以用它来即时翻译外文网页、PDF 文档、ePub 电子书、字幕等。它不仅可以实现原文加译文实时双语对照显示&#xff0c;还支持 Google、OpenAI、DeepL、微软、Gemini、Claude 等数十家翻译平台服务的自…...

cuda的并行运算介绍

cuda是如何使用GPU并行运算的&#xff1a; 以一个函数为例&#xff1a; duplicateWithKeys << <(P 255) / 256, 256 >> > (P,geomState.means2D,geomState.depths,geomState.point_offsets,binningState.point_list_keys_unsorted,binningState.point_list_…...

「全网最细 + 实战源码案例」设计模式——抽象工厂模式

核心思想 抽象工厂模式是一种创建型设计模式&#xff0c;它提供一个接口&#xff0c;用于创建一系列相关或互相依赖的对象&#xff0c;而无需指定它们的具体类。抽象工厂模式解决了产品族的问题&#xff0c;可以管理和创建一组相关的产品。 结构 1. 抽象工厂 定义创建一些列…...

DMA-330地址空间限制与扩展方案解析

1. DMA-330地址空间限制解析DMA-330作为Arm CoreLink系列中的直接内存访问控制器&#xff0c;其物理寻址能力直接由AxADDR信号宽度决定。这个32位地址总线宽度意味着它原生仅支持4GB&#xff08;2^32字节&#xff09;的物理地址空间访问。在实际嵌入式系统设计中&#xff0c;这…...

别再只用Service了!ROS1 Action通信保姆级教程:从导航进度条到任务取消,手把手教你实现带反馈的机器人任务

别再只用Service了&#xff01;ROS1 Action通信保姆级教程&#xff1a;从导航进度条到任务取消&#xff0c;手把手教你实现带反馈的机器人任务当你的机器人正在执行一个长达10分钟的导航任务时&#xff0c;突然发现目标点设置错误&#xff0c;这时候如果只能干等着任务完成或者…...

ThinkPad开机报错0183/0253?别慌,手把手教你搞定EFI变量错误(附BIOS重置教程)

ThinkPad开机报错0183/0253&#xff1f;EFI变量错误全面解决方案当你按下ThinkPad的电源键&#xff0c;期待熟悉的开机画面时&#xff0c;屏幕上却突然跳出一串神秘代码——"0183: Bad CRC of Security Settings in EFI Variable"或"0253: EFI Variable Block D…...

Windows终极PDF处理工具:3步免费安装Poppler完整指南

Windows终极PDF处理工具&#xff1a;3步免费安装Poppler完整指南 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 你是否曾经为在Windows上处理PDF文…...

OmenSuperHub:基于WMI BIOS控制的高性能笔记本硬件管理方案

OmenSuperHub&#xff1a;基于WMI BIOS控制的高性能笔记本硬件管理方案 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 在惠…...

【大模型聚合平台深度评测:阿里云百炼 vs 腾讯云 ADP,企业如何选型?】

大模型聚合平台深度评测&#xff1a;阿里云百炼 vs 腾讯云 ADP&#xff0c;企业如何选型&#xff1f; 随着大模型技术的快速发展&#xff0c;越来越多的企业开始将 AI 能力融入到业务流程中。然而&#xff0c;面对市场上众多的大模型产品&#xff0c;企业往往面临着 “选择困难…...

使用Taotoken CLI工具一键配置多开发环境下的统一模型接入点

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用Taotoken CLI工具一键配置多开发环境下的统一模型接入点 在团队协作或管理多个AI应用项目时&#xff0c;一个常见的痛点是每个…...

MaxEnt建模总失败?别急着换数据,先检查ArcGIS裁剪栅格这1个像素的坑

MaxEnt建模失败&#xff1f;ArcGIS栅格裁剪的1像素陷阱与精准修复指南当你花费数小时整理好WorldClim气候数据、本地DEM高程和物种分布数据&#xff0c;满心期待地点击MaxEnt的运行按钮时&#xff0c;屏幕上突然跳出"Error projecting, two layers have different geograp…...

如何高效使用HiveWE:魔兽争霸III地图制作的完整秘籍

如何高效使用HiveWE&#xff1a;魔兽争霸III地图制作的完整秘籍 【免费下载链接】HiveWE A Warcraft III world editor. 项目地址: https://gitcode.com/gh_mirrors/hi/HiveWE 还在为魔兽争霸III原版编辑器加载缓慢、操作卡顿而烦恼吗&#xff1f;HiveWE作为一款专注于速…...

Windows 11终极优化指南:一键清理系统,释放51%性能潜力

Windows 11终极优化指南&#xff1a;一键清理系统&#xff0c;释放51%性能潜力 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to decl…...