当前位置: 首页 > 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;一般是完成某些事情才能继续某…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

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

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

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》

&#x1f9e0; LangChain 中 TextSplitter 的使用详解&#xff1a;从基础到进阶&#xff08;附代码&#xff09; 一、前言 在处理大规模文本数据时&#xff0c;特别是在构建知识库或进行大模型训练与推理时&#xff0c;文本切分&#xff08;Text Splitting&#xff09; 是一个…...

C++中vector类型的介绍和使用

文章目录 一、vector 类型的简介1.1 基本介绍1.2 常见用法示例1.3 常见成员函数简表 二、vector 数据的插入2.1 push_back() —— 在尾部插入一个元素2.2 emplace_back() —— 在尾部“就地”构造对象2.3 insert() —— 在任意位置插入一个或多个元素2.4 emplace() —— 在任意…...