当前位置: 首页 > 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. 抽象工厂 定义创建一些列…...

领域驱动设计(DDD)四 订单管理系统实践步骤

以下是基于 领域驱动设计&#xff08;DDD&#xff09; 的订单管理系统实践步骤&#xff0c;系统功能主要包括订单的创建、更新、查询和状态管理&#xff0c;采用 Spring Boot 框架进行实现。 1. 需求分析 订单管理系统的基本功能&#xff1a; 订单创建&#xff1a;用户下单创…...

leetcode 面试经典 150 题:简化路径

链接简化路径题序号71题型字符串解法栈难度中等熟练度✅✅✅ 题目 给你一个字符串 path &#xff0c;表示指向某一文件或目录的 Unix 风格 绝对路径 &#xff08;以 ‘/’ 开头&#xff09;&#xff0c;请你将其转化为 更加简洁的规范路径。 在 Unix 风格的文件系统中规则如下…...

基于 STM32 的智能农业温室控制系统设计

1. 引言 随着农业现代化的发展&#xff0c;智能农业温室控制系统对于提高农作物产量和质量具有重要意义。该系统能够实时监测温室内的环境参数&#xff0c;如温度、湿度、光照强度和土壤湿度等&#xff0c;并根据这些参数自动调节温室设备&#xff0c;如通风扇、加热器、加湿器…...

【Spring Boot】掌握 Spring 事务:隔离级别与传播机制解读与应用

前言 &#x1f31f;&#x1f31f;本期讲解关于spring 事务传播机制介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话…...

【Postgres_Python】使用python脚本将多个PG数据库合并为一个PG数据库

需要合并的多个PG数据库表个数和结构一致&#xff0c;这里提供一种思路&#xff0c;选择sql语句insert插入的方式进行&#xff0c;即将其他PG数据库的每个表内容插入到一个PG数据库中完成数据库合并 示例代码说明&#xff1a; 选择一个数据库导出表结构为.sql文件&#xff08…...

Tailwind CSS v4.0 发布

Holy shit its actually done &#xff01; 1 月 22 日&#xff0c;Tailwind CSS 正式发布了 4.0 版本&#xff0c;针对性能和灵活性进行了优化&#xff0c;重新构想了配置和定制体验&#xff0c;并充分利用了 Web 平台提供的最新进展。 新的高性能引擎- 完整构建速度提高 5 …...

pandas基础:文件的读取和写入

文件的读取和写入 读取csv文件 csv文件&#xff1a; name,age,city Alice,25,New York Bob,30,Los Angelesread_csv(filename) header&#xff1a;如 何处理文件的第一行。header0将第一行作为列名&#xff0c;headerNone表示文件中没有列名&#xff0c;所有行都是数据。 im…...

【MySQL — 数据库增删改查操作】深入解析MySQL的create insert 操作

数据库CRUD操作 1 CRUD简介 CURD是对数据库中的记录进行基本的增删改查操作: 2. Create 新增 语法 INSERT [INTO] table_name[(column [&#xff0c;column] ...)] VALUES(value_list)[&#xff0c;(value_list)] ... # value 后面的列的个数和类型&#xff0c;要和表结构匹配…...

每日OJ_牛客_小红的子串_滑动窗口+前缀和_C++_Java

目录 牛客_小红的子串_滑动窗口前缀和 题目解析 C代码 Java代码 牛客_小红的子串_滑动窗口前缀和 小红的子串 描述&#xff1a; 小红拿到了一个长度为nnn的字符串&#xff0c;她准备选取一段子串&#xff0c;满足该子串中字母的种类数量在[l,r]之间。小红想知道&…...

HTTP 配置与应用(局域网)

想做一个自己学习的有关的csdn账号&#xff0c;努力奋斗......会更新我计算机网络实验课程的所有内容&#xff0c;还有其他的学习知识^_^&#xff0c;为自己巩固一下所学知识&#xff0c;下次更新HTTP 配置与应用&#xff08;不同网段&#xff09;。 我是一个萌新小白&#xf…...