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

牛客周赛 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 1n 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 1n 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-时间表查询&#xff01;解题思路参考代码 B-一起做很甜的梦&#xff01;解题思路参考代码 C-翻之解题思路参考代码 D-乘之解题思路参考代码 E-在树上游玩解题思路参考代码 A-时间表查询&#xff01; \hspace{15pt} 今天是2025年1月25日&#xff0c;今年的六场牛客寒…...

【机器学习】自定义数据集 ,使用朴素贝叶斯对其进行分类

一、贝叶斯原理 贝叶斯算法是基于贝叶斯公式的&#xff0c;其公式为&#xff1a; 其中叫做先验概率&#xff0c;叫做条件概率&#xff0c;叫做观察概率&#xff0c;叫做后验概率&#xff0c;也是我们求解的结果&#xff0c;通过比较后验概率的大小&#xff0c;将后验概率最大的…...

02.01 生产者消费者

请使用条件变量实现2生产者2消费者模型&#xff0c;注意1个生产者在生产的时候&#xff0c;另外一个生产者不能生产。 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&#xff0c;可以尝试以下解决方案。根据你提供的错误信息&#xff0c;问题可能出在测试阶段&#xff08;make test&#xff09;&#xff0c;我们可以尝试跳过测试或修复测试失败的原因。 --- ### **解决方案&#xff1a…...

kamailio-ACC_JSON模块详解【后端语言go】

要确认 ACC_JSON 模块是否已经成功将计费信息推送到消息队列&#xff08;MQueue&#xff09;&#xff0c;以及如何从队列中取值&#xff0c;可以按照以下步骤进行操作&#xff1a; 1. 确认 ACC_JSON 已推送到队列 1.1 配置 ACC_JSON 确保 ACC_JSON 模块已正确配置并启用。以下…...

ArkTS语言介绍

文章目录 一、基本知识声明类型运算符语句函数函数声明可选参数Rest参数返回类型函数的作用域函数调用函数类型箭头函数(又名Lambda函数)闭包函数重载类字段方法构造函数可见性修饰符对象字面量抽象类接口接口属性接口继承抽象类和接口泛型类型和函数泛型类和接口泛型约束泛型…...

海外问卷调查之渠道查,企业经营的指南针

海外问卷调查&#xff0c;是企业调研最常用到的方法&#xff0c;有目的、有计划、有系统地收集研究对象的现实状况或历史状况的一种有效手段&#xff0c;是指导企业经营的有效手段。 海外问卷调查充分运用历史法、观察法等方法&#xff0c;同时使用谈话、问卷、个案研究、测试…...

spring和Mybatis的逆向工程

在现代企业级开发中&#xff0c;使用Spring和MyBatis进行快速、高效的数据库操作是非常常见的。本文将深入探讨如何使用Spring和MyBatis进行逆向工程&#xff0c;帮助开发者自动生成数据库相关的代码&#xff0c;提高开发效率和代码质量。 一、什么是逆向工程 逆向工程是指从…...

【Android】问deepseek存储访问

这些天deepseek爆火&#xff0c;我们来问问android问题看看&#xff0c;如果问android中的应用怎么访问外部存储&#xff0c;回答的很清楚&#xff0c;但是如果问的深入一些&#xff0c;比如Android中是怎么控制让应用不能读取其他应用的外部存储文件的&#xff0c;回答的比较抽…...

Android记事本App设计开发项目实战教程2025最新版Android Studio

平时上课录了个视频&#xff0c;从新建工程到打包Apk&#xff0c;从头做到尾&#xff0c;没有遗漏任何实现细节&#xff0c;欢迎学过Android基础的同学参加&#xff0c;如果你做过其他终端软件开发&#xff0c;也可以学习&#xff0c;快速上手Android基础开发。 Android记事本课…...

python学习——函数的返回值

在 Python 中&#xff0c;函数的返回值决定了调用该函数后得到的结果。默认情况下&#xff0c;如果函数没有使用 return 语句或没有明确返回一个值&#xff0c;函数将返回 None。为了实现更复杂的逻辑&#xff0c;可以通过 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&#xff0c;并且想通过一个有趣的小项目来巩固所学知识&#xff0c;那么“猜数字游戏”是一个绝佳的选择&#xff01;这个游戏的逻辑非常简单&#xff1a;程序会随机生成一个数字&#xff0c;玩家需要猜测这个数字是多少&#xff0c;程序会告诉玩家猜大了还…...

JavaFX - 3D 形状

在前面的章节中&#xff0c;我们已经了解了如何在 JavaFX 应用程序中的 XY 平面上绘制 2D 形状。除了这些 2D 形状之外&#xff0c;我们还可以使用 JavaFX 绘制其他几个 3D 形状。 通常&#xff0c;3D 形状是可以在 XYZ 平面上绘制的几何图形。它们由两个或多个维度定义&#…...

阿里新发的大模型Qwen2.5-max如何?

阿里新发布的大模型Qwen2.5-Max是一款性能卓越、技术先进的大型语言模型&#xff0c;其在多个方面展现了突出的表现。以下是基于我搜索到的资料对Qwen2.5-Max的详细评价&#xff1a; 技术特点 超大规模预训练数据&#xff1a;Qwen2.5-Max采用了超过20万亿tokens的超大规模预训…...

文本复制兼容方案最佳实现落地。

文章目录 一、navigator.clipboard.writeText二、方案落地总结 一、navigator.clipboard.writeText navigator.clipboard.writeText 是一个Web API&#xff0c;它允许网页脚本将文本数据写入用户的系统剪贴板。这个API是异步的&#xff0c;并且设计用于提高安全性和用户体验&a…...

x86-64数据传输指令

关于汇编语言一些基础概念的更详细的介绍&#xff0c;可移步MIPS指令集&#xff08;一&#xff09;基本操作_mips指令 sw-CSDN博客 该指令集中一个字2字节。 该架构有16个64位寄存器&#xff0c;名字都以%r开头&#xff0c;每个寄存器的最低位字节&#xff0c;低1~2位字节&…...

LigerUI在MVC模式下的响应原则

LigerUI是基于jQuery的UI框架&#xff0c;故他也是遵守jQuery的开发模式&#xff0c;但是也具有其特色的侦听函数&#xff0c;那么当LigerUI作为View层的时候&#xff0c;他所发送后端的必然是表单的数据&#xff0c;在此我们以俩个div为例&#xff1a; {Layout "~/View…...

java CountDownLatch和CyclicBarrier

专栏系列文章地址&#xff1a;https://blog.csdn.net/qq_26437925/article/details/145290162 本文目标&#xff1a; 理解CountDownLatch和CyclicBarrier的使用&#xff0c;主要是复习Aqs 另外工作中用到CountDownLatch的地方还很多&#xff0c;一般是完成某些事情才能继续某…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

用鸿蒙HarmonyOS5实现中国象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...

沙箱虚拟化技术虚拟机容器之间的关系详解

问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西&#xff0c;但是如果把三者放在一起&#xff0c;它们之间到底什么关系&#xff1f;又有什么联系呢&#xff1f;我不是很明白&#xff01;&#xff01;&#xff01; 就比如说&#xff1a; 沙箱&#…...