牛客周赛 Round 78
题目目录
- A-时间表查询!
- 解题思路
- 参考代码
- B-一起做很甜的梦!
- 解题思路
- 参考代码
- C-翻之
- 解题思路
- 参考代码
- D-乘之
- 解题思路
- 参考代码
- E-在树上游玩
- 解题思路
- 参考代码
A-时间表查询!
\hspace{15pt} 今天是2025年1月25日,今年的六场牛客寒假算法基础集训营中,前两场比赛已经依次于 20250121、20250123 举行;而后四场比赛将依次于 20250126、20250206、20250208、20250211 举行。
\hspace{15pt} 小歪想知道第 x x x 场比赛是否已经举行,你能帮帮他吗?
解题思路
直接输出。
参考代码
#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
const int N = 2e5 + 10;void solve(){int n;cin >> n;if(n <= 2){cout << "YES\n";}else{cout << "NO\n";}
}
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);int t = 1;
// cin >> t;while(t --){solve();}
}
B-一起做很甜的梦!
\hspace{15pt} 梦境是由我们的记忆碎片重组后再次演绎的结果。对于一个拥有 n n n 段记忆的人,我们可以使用 1 ∼ n 1 \sim n 1∼n 这 n n n 个整数来表示每一段记忆。将这 n n n 段记忆打乱后重新组合,就得到了一个梦。
\hspace{15pt} 作为牛客星球的首席梦境研究员,牛可乐在研究中发现:如果一个梦境中任意连续的 k k k 段记忆(其中 1 < k < n 1 < k < n 1<k<n)都无法完整还原出一段真实经历时(即不构成一个排列),这个梦就会特别甜美。这种恰到好处的记忆重组方式,让梦境与现实保持着微妙的距离,创造出令人陶醉的朦胧美感。
\hspace{15pt} 现在,牛可乐想请你帮忙设计一些这样的甜美梦境,来继续他的天才研究。
\hspace{15pt} 长度为 n n n 的排列是由 1 ∼ n 1 \sim n 1∼n 这 n n n 个整数、按任意顺序组成的数组,其中每个整数恰好出现一次。例如, { 2 , 3 , 1 , 5 , 4 } \{2,3,1,5,4\} {2,3,1,5,4} 是一个长度为 5 5 5 的排列,而 { 1 , 2 , 2 } \{1,2,2\} {1,2,2} 和 { 1 , 3 , 4 } \{1,3,4\} {1,3,4} 都不是排列,因为前者存在重复元素,后者包含了超出范围的数。
解题思路
要求任意连续的子区间都不能构成排列,奇数从小到大偶数从大到小输出即可。
参考代码
#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
const int N = 2e5 + 10;void solve(){int n;cin >> n;vector<int> ans1,ans2;for(int i = 1;i <= n;i ++){if(i & 1){ans1.push_back(i);}else{ans2.push_back(i);}}for(auto x : ans1){cout << x << " ";}sort(ans2.begin(),ans2.end(),greater<int>());for(auto x : ans2){cout << x << " ";}
}
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);int t = 1;
// cin >> t;while(t --){solve();}
}
C-翻之
\hspace{15pt} 对于给定的 n n n 行 m m m 列的矩阵,每一个元素要么是 ‘0’ \texttt{`0'} ‘0’,要么是 ‘1’ \texttt{`1'} ‘1’。
\hspace{15pt} 每一轮,你可以进行一次以下操作:
∙ \hspace{23pt}\bullet\, ∙选择一行的元素,将其全部反置,即 ‘0’ \texttt{`0'} ‘0’ 变为 ‘1’ \texttt{`1'} ‘1’, ‘1’ \texttt{`1'} ‘1’ 变为 ‘0’ \texttt{`0'} ‘0’。
\hspace{15pt} 请你帮助小歪判断,若能进行任意多轮操作(也可以不进行操作),至多能使得多少列的元素均为 ‘1’ \texttt{`1'} ‘1’。你只需要输出这个最大值。
解题思路
每次操作将一行的元素都会进行反置,那么其实对于每一列的元素都会有影响。
所以两列如果能够同时为全1列的话,那么必然这两列初始状态就是相同的。
比如下面的一个矩阵:
0 0 1 1 1
1 0 0 0 0
1 0 1 1 1
1 0 1 1 0
取第三列为:1 0 1 1
取第五列为:1 0 1 0
无论如何进行操作都无法将第三列和第五列都变为1 1 1 1。
因为每次操作是将两列同一位置的元素进行反置,如果同一位置的两个元素不同的话无论如何反置都无法相同。只有相同才能变相同,不同必不相同。
所以答案就是取相同列的最大值。
参考代码
#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
const int N = 2e5 + 10;
void solve(){int n,m;cin >> n >> m;vector<string> s(m + 1);for(int i = 1;i <= n;i ++){for(int j = 1;j <= m;j ++){char c;cin >> c;s[j] += c;}}map<string,int> mp;int ans = 1;for(int i = 1;i <= m;i ++){mp[s[i]] ++;ans = max(ans,mp[s[i]]);}cout << ans;}
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);int t = 1;
// cin >> t;while(t --){solve();}
}
D-乘之
\hspace{15pt} 对于给定的由 n n n 个整数组成的数组 { a 1 , a 2 , … , a n } \{a_1,a_2,\dots,a_n\} {a1,a2,…,an},小龙和小蛇借助于此数组进行游戏。
\hspace{15pt} 游戏步骤如下:
1. {\hspace{20pt}}_\texttt{1.}\, 1.小龙选择一个非空区间 [ a , b ] [a, b] [a,b];
2. {\hspace{20pt}}_\texttt{2.}\, 2.小蛇选择一个非空区间 [ c , d ] [c, d] [c,d];
3. {\hspace{20pt}}_\texttt{3.}\, 3.将选中的区间中的全部元素均乘上 k k k,得到数组 a ′ a' a′;
\hspace{15pt} 游戏只进行一轮,三个步骤结束后立即停止。
\hspace{15pt} 小龙想要让数组 a ′ a' a′ 的元素之和尽可能大,小蛇想要让数组 a ′ a' a′ 的元素之和尽可能小。假设双方都采取的是最优策略,请你计算操作后得到的数组 a ′ a' a′ 的元素之和。
\hspace{15pt} 请注意,区间 [ a , b ] [a, b] [a,b] 和 [ c , d ] [c, d] [c,d] 可以相交,但只结算一次,即若某一个位置被小龙和小蛇同时选中,依旧只乘一次。
解题思路
一开始用的区间最大值、最小值去做的这题,但是好像可以通过最优策略得出结论。
先说结论:整个数组乘以k就是答案。
听起来是不是有点神秘,但其实通过最优策略确实是这么个道理。
首先第一个人选取的区间肯定是最利于他自己的,那么剩下的区间(可能是0个、1个、2个)就是不利于第一个人的,但是一定是利于第二个人的。并且题目说了两个人取得区间交集不会重复计算,那么无论在第一个人取了区间后剩下多少个区间,第二个人都可以把剩下的区间当作一个区间来取走。
所以在两个人的最优策略下整个数组的元素会刚好被使用一次。

参考代码
#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
const int N = 2e5 + 10;void solve(){int n,k;cin >> n >> k;vector<i64> a(n + 1);for(int i = 1;i <= n;i ++){cin >> a[i];}i64 ans = 0;for(int i = 1;i <= n;i ++){ans += a[i] * k;}cout << ans << "\n";
}
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);int t = 1;cin >> t; while(t --){solve();}
}
E-在树上游玩
\hspace{15pt} 对于给定的由 n n n 个节点组成的无根树,每一条边都可以被染上颜色,初始时,全部边均为白色。
\hspace{15pt} 现在,选中树上 k k k 个不同的点,并将它们标记,随后,定义,如果一条树边 ( u , v ) (u, v) (u,v) 满足节点 u u u 和 v v v 同时被标记,那么这条树边自动被染为红色,不需要花费任何代价。
\hspace{15pt} 现在,你可以额外选择一些树边,将它们染成红色,每染一条边需要花费 1 1 1 点代价。
\hspace{15pt} 请你计算最小的染色代价,使得任意一个被标记的点都可以通过被染成红色的边到达至少一个未被标记的点。并输出不同的染色方案数量。
解题思路
用dsu计算红边相连的连通块有几个,然后每个连通块的最近子节点的个数相乘就是ans。

每个红圈代表一个连通块,蓝色的字表示有几个最近子节点,黄色的是哪几个最近子节点。
参考代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
using i64 = long long;
const int N = 2e5 + 10;
const int mod = 1e9 + 7;
void solve(){int n,k;cin >> n >> k;vector<int> sig(n + 1);for(int i = 1;i <= k;i ++){int x;cin >> x;sig[x] = 1;}vector<vector<int>> g(n + 1);vector<int> fa(n + 1),cnt(n + 1);for(int i = 1;i <= n;i ++){fa[i] = i;cnt[i] = 0;}auto find = [&](auto &&find,int x)-> int{if(fa[x] != x){return fa[x] = find(find,fa[x]);}return fa[x];};for(int i = 1;i < n;i ++){int u,v;cin >> u >> v;if(sig[u] && !sig[v]){cnt[find(find,u)] ++;}if(sig[v] && !sig[u]){cnt[find(find,v)] ++;}if(sig[u] && sig[v]){int fa1 = find(find,u);int fa2 = find(find,v);if(fa1 == fa2){continue;}cnt[fa1] += cnt[fa2];fa[fa2] = fa1;}}int ans1 = 0,ans2 = 1;for(int i = 1;i <= n;i ++){if(sig[i] && fa[i] == i){ans1 ++;ans2 = ans2 * cnt[i] % mod;}}cout << ans1 << " " << ans2 << "\n";
}
signed main(){ios::sync_with_stdio(false);cin.tie(nullptr);int t = 1;
// cin >> t;while(t --){solve();}
}
相关文章:
牛客周赛 Round 78
题目目录 A-时间表查询!解题思路参考代码 B-一起做很甜的梦!解题思路参考代码 C-翻之解题思路参考代码 D-乘之解题思路参考代码 E-在树上游玩解题思路参考代码 A-时间表查询! \hspace{15pt} 今天是2025年1月25日,今年的六场牛客寒…...
【机器学习】自定义数据集 ,使用朴素贝叶斯对其进行分类
一、贝叶斯原理 贝叶斯算法是基于贝叶斯公式的,其公式为: 其中叫做先验概率,叫做条件概率,叫做观察概率,叫做后验概率,也是我们求解的结果,通过比较后验概率的大小,将后验概率最大的…...
02.01 生产者消费者
请使用条件变量实现2生产者2消费者模型,注意1个生产者在生产的时候,另外一个生产者不能生产。 1>程序代码 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h>…...
mac 手工安装OpenSSL 3.4.0
如果你希望继续安装 openssl-3.4.0 而不是降级到 3.1.1,可以尝试以下解决方案。根据你提供的错误信息,问题可能出在测试阶段(make test),我们可以尝试跳过测试或修复测试失败的原因。 --- ### **解决方案:…...
kamailio-ACC_JSON模块详解【后端语言go】
要确认 ACC_JSON 模块是否已经成功将计费信息推送到消息队列(MQueue),以及如何从队列中取值,可以按照以下步骤进行操作: 1. 确认 ACC_JSON 已推送到队列 1.1 配置 ACC_JSON 确保 ACC_JSON 模块已正确配置并启用。以下…...
ArkTS语言介绍
文章目录 一、基本知识声明类型运算符语句函数函数声明可选参数Rest参数返回类型函数的作用域函数调用函数类型箭头函数(又名Lambda函数)闭包函数重载类字段方法构造函数可见性修饰符对象字面量抽象类接口接口属性接口继承抽象类和接口泛型类型和函数泛型类和接口泛型约束泛型…...
海外问卷调查之渠道查,企业经营的指南针
海外问卷调查,是企业调研最常用到的方法,有目的、有计划、有系统地收集研究对象的现实状况或历史状况的一种有效手段,是指导企业经营的有效手段。 海外问卷调查充分运用历史法、观察法等方法,同时使用谈话、问卷、个案研究、测试…...
spring和Mybatis的逆向工程
在现代企业级开发中,使用Spring和MyBatis进行快速、高效的数据库操作是非常常见的。本文将深入探讨如何使用Spring和MyBatis进行逆向工程,帮助开发者自动生成数据库相关的代码,提高开发效率和代码质量。 一、什么是逆向工程 逆向工程是指从…...
【Android】问deepseek存储访问
这些天deepseek爆火,我们来问问android问题看看,如果问android中的应用怎么访问外部存储,回答的很清楚,但是如果问的深入一些,比如Android中是怎么控制让应用不能读取其他应用的外部存储文件的,回答的比较抽…...
Android记事本App设计开发项目实战教程2025最新版Android Studio
平时上课录了个视频,从新建工程到打包Apk,从头做到尾,没有遗漏任何实现细节,欢迎学过Android基础的同学参加,如果你做过其他终端软件开发,也可以学习,快速上手Android基础开发。 Android记事本课…...
python学习——函数的返回值
在 Python 中,函数的返回值决定了调用该函数后得到的结果。默认情况下,如果函数没有使用 return 语句或没有明确返回一个值,函数将返回 None。为了实现更复杂的逻辑,可以通过 return 语句返回多个值、错误信息或其他数据类型。 返…...
【竞技宝】裂变天地S1:BB0-2PARI淘汰出局
北京时间2月1日,DOTA2裂变天地S1继续进行,昨日共进行三场比赛,第三场比赛迎来败者组第二轮PARI对阵BB。以下是本场比赛的详细战报。 第一局: 首局比赛,BB在天辉方,PARI在夜魇方。阵容方面,BB点出了圣堂、卡尔、玛尔斯、奶绿、亚巴顿,PARI则是拿到小娜迦、凤凰、大圣、玛西、萨…...
数据分析系列--⑨RapidMiner训练集、测试集、验证集划分
一、数据集获取 二、划分数据集 1.导入和加载数据 2.数据集划分 2.1 划分说明 2.2 方法一 2.3 方法二 一、数据集获取 点击下载数据集 此数据集包含538312条数据. 二、划分数据集 1.导入和加载数据 2.数据集划分 2.1 划分说明 2.2 方法一 使用Filter Example Range算子. …...
实践Rust:编写一个猜数字游戏
如果你正在学习Rust,并且想通过一个有趣的小项目来巩固所学知识,那么“猜数字游戏”是一个绝佳的选择!这个游戏的逻辑非常简单:程序会随机生成一个数字,玩家需要猜测这个数字是多少,程序会告诉玩家猜大了还…...
JavaFX - 3D 形状
在前面的章节中,我们已经了解了如何在 JavaFX 应用程序中的 XY 平面上绘制 2D 形状。除了这些 2D 形状之外,我们还可以使用 JavaFX 绘制其他几个 3D 形状。 通常,3D 形状是可以在 XYZ 平面上绘制的几何图形。它们由两个或多个维度定义&#…...
阿里新发的大模型Qwen2.5-max如何?
阿里新发布的大模型Qwen2.5-Max是一款性能卓越、技术先进的大型语言模型,其在多个方面展现了突出的表现。以下是基于我搜索到的资料对Qwen2.5-Max的详细评价: 技术特点 超大规模预训练数据:Qwen2.5-Max采用了超过20万亿tokens的超大规模预训…...
文本复制兼容方案最佳实现落地。
文章目录 一、navigator.clipboard.writeText二、方案落地总结 一、navigator.clipboard.writeText navigator.clipboard.writeText 是一个Web API,它允许网页脚本将文本数据写入用户的系统剪贴板。这个API是异步的,并且设计用于提高安全性和用户体验&a…...
x86-64数据传输指令
关于汇编语言一些基础概念的更详细的介绍,可移步MIPS指令集(一)基本操作_mips指令 sw-CSDN博客 该指令集中一个字2字节。 该架构有16个64位寄存器,名字都以%r开头,每个寄存器的最低位字节,低1~2位字节&…...
LigerUI在MVC模式下的响应原则
LigerUI是基于jQuery的UI框架,故他也是遵守jQuery的开发模式,但是也具有其特色的侦听函数,那么当LigerUI作为View层的时候,他所发送后端的必然是表单的数据,在此我们以俩个div为例: {Layout "~/View…...
java CountDownLatch和CyclicBarrier
专栏系列文章地址:https://blog.csdn.net/qq_26437925/article/details/145290162 本文目标: 理解CountDownLatch和CyclicBarrier的使用,主要是复习Aqs 另外工作中用到CountDownLatch的地方还很多,一般是完成某些事情才能继续某…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
