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

【更新完毕】2024牛客寒假算法基础集训营6 题解 | JorbanS

文章目录

  • [A - 宇宙的终结](https://ac.nowcoder.com/acm/contest/67746/A)
  • [B - 爱恨的纠葛](https://ac.nowcoder.com/acm/contest/67746/B)
  • [C - 心绪的解剖](https://ac.nowcoder.com/acm/contest/67746/C)
  • [D - 友谊的套路](https://ac.nowcoder.com/acm/contest/67746/D)
  • [E - 未来的预言](https://ac.nowcoder.com/acm/contest/67746/E)
  • [F - 命运的抉择](https://ac.nowcoder.com/acm/contest/67746/F)
  • [G - 人生的起落](https://ac.nowcoder.com/acm/contest/67746/G)
  • [I - 时空的交织](https://ac.nowcoder.com/acm/contest/67746/I)
  • [J - 绝妙的平衡](https://ac.nowcoder.com/acm/contest/67746/J)

A - 宇宙的终结

暴力枚举三个数即可

int p[9] = {2, 3, 5, 7, 11, 13, 17, 19, 23};bool check(int x) {for (int i = 0; i < 9; i ++)for (int j = i + 1; j < 9; j ++)for (int k = j + 1; k < 9; k ++)if (p[i] * p[j] * p[k] == x) return true;return false;
}int solve() {int l, r; cin >> l >> r;for (int i = l; i <= r; i ++)if (check(i)) return i;return -1;
}

B - 爱恨的纠葛

找到一对数 ( a i , b j ) (a_i,~b_j) (ai, bj) 使其差最小,对于每一个 b i b_i bi,二分查找其大于等于和小于它的第一个 a i a_i ai,最后输出保证 a i a_i ai b j b_j bj 所在位置

void solve() {cin >> n;map<int, int> mp;for (int i = 0; i < n; i ++) cin >> a[i];for (int i = 0; i < n; i ++) cin >> b[i];sort(a, a + n);int pos = -1, Min = 1e9, num;for (int i = 0; i < n; i ++) {int t = lower_bound(a, a + n, b[i]) - a;if (abs(b[i] - a[t]) < Min) {Min = abs(b[i] - a[t]);pos = i;num = t;}if (t && abs(b[i] - a[t - 1]) < Min) {Min = abs(b[i] - a[t - 1]);pos = i;num = t - 1;}}vector<int> c;for (int i = 0; i < n; i ++)if (i != num) c.emplace_back(a[i]);for (int i = 0; i <= pos - 1; i ++) cout << c[i] << ' ';cout << a[num] << ' ';for (int i = pos; i < n - 1; i ++) cout << c[i] << ' ';cout << endl;
}

C - 心绪的解剖

先求出 0 ∼ 1 0 9 0\sim10^9 0109 的斐波那契数列

法一:预处理出所有三个斐波那契数可能形成的数

int f[N];
map<int, int> p;void solve() {cin >> n;int t = p[n];if (t) {cout << a[t] << ' ' << b[t] << ' ' << c[t] << endl;} else cout << -1 << endl;
}signed main() {FastIOf[0] = 0, f[1] = 1;for (int i = 2; i <= 44; i ++) f[i] = f[i - 1] + f[i - 2];int idx = 0;for (int i = 0; i <= 44; i ++)for (int j = 0; j <= 44; j ++)for (int k = 0; k <= 44; k ++) {p[f[i] + f[j] + f[k]] = ++ idx;a[idx] = f[i];b[idx] = f[j];c[idx] = f[k];}Casessolve();return 0;
}

法二:由于每个数都可由至少另外两个数表示,所以贪心的,每次减去尽可能大的值

三次二分,每次减去二分出来的值

D - 友谊的套路

双方均有可能让二追三

void solve() {double res = 0, p; cin >> p;res += p * p * p * (1 - p) * (1 - p);res += p * p * (1 - p) * (1 - p) * (1 - p);printf("%.8lf\n", res);
}

E - 未来的预言

模拟一下

void solve() {getchar();getchar();cin >> m >> s;n = s.size();int r = 0, p = 0;for (int i = 1; i <= n; i ++) {if (s[i - 1] == 'R') r ++;else p ++;if (r > m >> 1) {cout << R << endl << i << endl;return;}if (p > m >> 1) {cout << P << endl << i << endl;return;}}cout << "to be continued." << endl << n << endl;
}

F - 命运的抉择

先预处理每个数的全部质因数( 1 1 1 特殊处理)

并查集维护每个数是否需要处于同一组

int n, m, k;
int a[N], b[N], p[N];
vector<vector<int>> e(N);int find(int x) { return x == p[x] ? x : p[x] = find(p[x]); }void solve() {cin >> n;for (int i = 1; i <= n; i ++) p[i] = i;vector<int> q;for (int i = 1; i <= n; i ++) {cin >> a[i];for (auto j : e[a[i]])if (!b[j]) b[j] = i, q.emplace_back(j);else p[find(i)] = find(b[j]);}for (auto i : q) b[i] = 0;int cnt = 0;for (int i = 2; i <= n; i ++) cnt += find(1) != find(i);if (!cnt) {cout << "-1 -1" << endl;return;}cout << n - cnt << ' ' << cnt << endl;for (int i = 1; i <= n; i ++) if (p[1] == p[i]) cout << a[i] << ' ';cout << endl;for (int i = 1; i <= n; i ++) if (p[1] != p[i]) cout << a[i] << ' ';cout << endl;
}signed main() {FastIOe[1].emplace_back(1);for (int i = 2; i <= 1e6; i ++)if (e[i].empty())for (int j = i; j <= 1e6; j += i)e[j].emplace_back(i);Casessolve();return 0;
}

G - 人生的起落

先特判当 2 k + 1 > n 2k+1\gt n 2k+1>n 时必然不成立

贪心地,让 2 1 2 2~1~2 2 1 2 作为三元组,则当 k ≠ 0 k\neq0 k=0 时若 m < n + k + 1 m\lt n+k+1 m<n+k+1 时必然不成立

k = 0 k=0 k=0,让除了第一个位置的所有数填 1 1 1,第一个位置填剩余的数即可

k > 0 k\gt0 k>0 时,

构造 x y x x~y~x x y x,使得 x x x 尽可能大,剩下的先全部放 1 1 1,设剩下的为 m , m < k + 1 m,~m\lt k+1 m, m<k+1

若正好铺满,即 2 k + 1 = n 2k+1=n 2k+1=n 时,若 x = y + 1 x=y+1 x=y+1,则不成立,否则将 m m m 个谷位置 + 1 +1 +1

若未正好铺满,则让 a [ 2 k + 1 ] : = m a[2k+1]:=m a[2k+1]:=m

void solve() {cin >> n >> m >> k;if (k * 2 + 1 > n || k && m < n + k + 1) {cout << -1 << endl;return;}for (int i = 0; i < n; i ++) a[i] = 1, m --;if (k) {for (int i = 0; i <= k << 1; i += 2) a[i] += m / (k + 1);m %= k + 1;if (k * 2 + 1 == n) {if (a[0] == a[1] + 1 && m) {cout << -1 << endl;return;}for (int i = 1; i <= m * 2 - 1; i += 2) a[i] ++;} else a[k * 2 + 1] += m;} else a[0] += m;for (int i = 0; i < n; i ++) cout << a[i] << " \n"[i == n - 1];
}

I - 时空的交织

∑ i = 1 n ∑ j = 1 m a i × b j = ∑ i = 1 n a i × ∑ j = 1 m b j \sum_{i=1}^n\sum_{j=1}^ma_i\times b_j=\sum_{i=1}^na_i\times\sum_{j=1}^m b_j i=1nj=1mai×bj=i=1nai×j=1mbj

转化为 a , b a,~b a, b 连续子序列和的最大乘积

ll cal() {ll t = 0, A = -1e18, B = -1e18;for (int i = 0; i < n; i ++) {if (a[i] >= -t) t += a[i];else t = 0;A = max(A, t);}t = 0;for (int i = 0; i < m; i ++) {if (b[i] >= -t) t += b[i];else t = 0;B = max(B, t);}return A * B;
}ll solve() {cin >> n >> m;int MaxA = -1e9, MaxB = -1e9;int MinA = 1e9, MinB = 1e9;for (int i = 0; i < n; i ++) {cin >> a[i];MaxA = max(MaxA, a[i]);MinA = min(MinA, a[i]);}for (int i = 0; i < m; i ++) {cin >> b[i];MaxB = max(MaxB, b[i]);MinB = min(MinB, b[i]);}ll res = max(MaxA * MinB, MinA * MaxB);if (MinA >= 0 && MaxB <= 0 || MaxA <= 0 && MinB >= 0) return res;res = max(res, cal());for (int i = 0; i < n; i ++) a[i] *= -1;for (int i = 0; i < m; i ++) b[i] *= -1;res = max(res, cal());return res;
}

J - 绝妙的平衡

因为对于红节点的子树和已为 3 3 3 的倍数,则对于某一个红节点来说,无需考虑该红节点子树中的子红节点子树,将未涂色的节点和该红节点构造和为 3 3 3 的倍数即可

int n, f[N], a[N];
string s;
vector<vector<int>> e(N), E(N);
vector<int> R;void dfs(int u = 1, int fa = 0) {if (s[u] == 'W') f[u] = f[fa];for (auto v : e[u]) if (v != fa) dfs(v, u);
}void solve() {cin >> n >> s;s = " " + s;for (int i = 2; i <= n; i ++) {int x; cin >> x;e[x].emplace_back(i);}for (int i = 1; i <= n; i ++) f[i] = i, a[i] = 1;dfs();for (int i = 1; i <= n; i ++) {if (f[i] == i) R.emplace_back(i);E[f[i]].emplace_back(i);}for (auto u : R) {if (E[u].size() == 1) {cout << -1 << endl;return;}if (E[u].size() & 1) {for (int i = 0; i < 3; i ++) a[E[u][i]] = 1;for (int i = 3; i < E[u].size(); i ++) a[E[u][i]] = (i & 1) + 1;} else {for (int i = 0; i < E[u].size(); i ++) a[E[u][i]] = (i & 1) + 1;}}for (int i = 1; i <= n; i ++) cout << a[i];cout << endl;
}

相关文章:

【更新完毕】2024牛客寒假算法基础集训营6 题解 | JorbanS

文章目录 [A - 宇宙的终结](https://ac.nowcoder.com/acm/contest/67746/A)[B - 爱恨的纠葛](https://ac.nowcoder.com/acm/contest/67746/B)[C - 心绪的解剖](https://ac.nowcoder.com/acm/contest/67746/C)[D - 友谊的套路](https://ac.nowcoder.com/acm/contest/67746/D)[E …...

FL Studio All Plugins Edition2024中文完整版Win/Mac

FL Studio All Plugins Edition&#xff0c;常被誉为数字音频工作站&#xff08;DAW&#xff09;的佼佼者&#xff0c;是音乐制作人和声音工程师钟爱的工具。它集音频录制、编辑、混音以及MIDI制作为一体&#xff0c;为用户提供了从创作到最终作品输出的完整工作流程。这个版本…...

神经网络系列---归一化

文章目录 归一化批量归一化预测阶段 测试阶段γ和β&#xff08;注意&#xff09;举例 层归一化前向传播反向传播 归一化 批量归一化 &#xff08;Batch Normalization&#xff09;在训练过程中的数学公式可以概括如下&#xff1a; 给定一个小批量数据 B { x 1 , x 2 , … …...

2023 龙蜥操作系统大会演讲实录:《兼容龙蜥的云原生大模型数据计算系统——πDataCS》

本文主要分三部分内容&#xff1a;第一部分介绍拓数派公司&#xff0c;第二部分介绍 πDataCS 产品&#xff0c;最后介绍 πDataCS 与龙蜥在生态上的合作。 杭州拓数派科技发展有限公司&#xff08;简称“拓数派”&#xff0c;英文名称“OpenPie”&#xff09;是国内基础数据计…...

【Vue渗透】Vue站点渗透思路

原文地址 极核GetShell 前言 本文经验适用于前端用Webpack打包的Vue站点&#xff0c;阅读完本文&#xff0c;可以识别出Webpack打包的Vue站点&#xff0c;同时可以发现该Vue站点的路由。 成果而言&#xff1a;可能可以发现未授权访问。 识别Vue 识别出Webpack打包的Vue站…...

主数据管理是数字化转型成功的基石——江淮汽车案例分享

汽车行业数字化转型的背景 在新冠疫情导火索的影响下&#xff0c;经济全球化政治基础逐渐动摇。作为全球最大的汽车市场&#xff0c;我国的汽车市场逐渐由增量转为存量市场。 在数字化改革大背景下&#xff0c;随着工业4.0时代的到来&#xff0c;江淮汽车集团力争实现十四五数…...

【Spring连载】使用Spring Data访问 MongoDB(十一)----加密Encryption (CSFLE)

[TOC](【Spring连载】使用Spring Data访问 MongoDB&#xff08;十一&#xff09;----加密Encryption (CSFLE)) 一级目录 二级目录 三级目录...

【postgresql】数据表id自增与python sqlachemy结合实例

需求&#xff1a; postgresql实现一个建表语句&#xff0c;表名&#xff1a;student,字段id,name,age&#xff0c; 要求&#xff1a;每次添加一个数据id会自动增加1 在PostgreSQL中&#xff0c;您可以使用SERIAL或BIGSERIAL数据类型来自动生成主键ID。以下是一个创建名为stude…...

什么是索引?在 MySQL 中有哪些类型的索引?它们各自的优势和劣势是什么?

什么是索引&#xff1f;在 MySQL 中有哪些类型的索引&#xff1f;它们各自的优势和劣势是什么&#xff1f; 索引是数据库中用于帮助快速查询数据的一种数据结构。在 MySQL 中&#xff0c;索引可以显著提高查询性能&#xff0c;因为它允许数据库系统不必扫描整个表来找到相关数据…...

Docker安装与基础知识

目录 -----------------Docker 概述--------------------------- 容器化越来越受欢迎&#xff0c;因为容器是&#xff1a; Docker与虚拟机的区别&#xff1a; Docker核心概念&#xff1a; ●镜像 ●容器 ●仓库 -----------------安装 Docker--------------------------…...

搭建Facebook直播网络对IP有要求吗?

在当今数字化时代&#xff0c;Facebook直播已经成为了一种极具吸引力的社交形式&#xff0c;为个人和企业提供了与观众直接互动的机会&#xff0c;成为推广产品、分享经验、建立品牌形象的重要途径。然而&#xff0c;对于许多人来说&#xff0c;搭建一个稳定、高质量的Facebook…...

Qt开发:MAC安装qt、qtcreate(配置桌面应用开发环境)

安装qt-creator brew install qt-creator安装qt brew install qt查看qt安装路径 brew info qtzhbbindembp ~ % brew info qt > qt: stable 6.6.1 (bottled), HEAD Cross-platform application and UI framework https://www.qt.io/ /opt/homebrew/Cellar/qt/6…...

python学习网站

Python系列干货之——Python与设计模式 - 知乎 Python之23种设计模式_23种设计模式 python-CSDN博客 用python实现设计模式 — python-golang-web-guide 0.1 文档 python设计模式_Python六大原则&#xff0c;23种设计模式 - 掘金 Python 常用设计模式 Python入门 类class提…...

编程笔记 Golang基础 033 反射的类型与种类

编程笔记 Golang基础 033 反射的类型与种类 一、反射的类型和种类二、切片与反射三、集合与反射四、结构体与反射五、指针与反射六、函数与反射小结 反射机制的作用范围涵盖了几乎所有的类型和值的操作层面&#xff0c;它极大地增强了Go语言在运行时对于自身类型系统的探索和操…...

MySQL进阶篇2-索引的创建和使用以及SQL的性能优化

索引 mkdir mysql tar -xvf mysqlxxxxx.tar -c myql cd mysql rpm -ivh .....rpm yum install openssl-devel ​ systemctl start mysqld ​ gerp temporary password /var/log/mysqld.log ​ mysql -u root -p mysql> show variables like validate_password.% set glob…...

基于SVM的功率分类,基于支持向量机SVM的功率分类识别,Libsvm工具箱详解

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 完整代码和数据下载链接:基于SVM的功率分类,基于支持向量机SVM的功率分类识别资源-CSDN文库 https://download.csdn.net/download/abc991835105/88862836 SVM应用实例, 基于…...

【IO流】FileWrite字符输出流

FileWrite字符输出流 1. 概述2. 作用3. 方法4. 细节5. 代码示例6. 注意事项 1. 概述 java.io.FileWriter 类是写出字符到文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。 FileWriter 是用于写入字符数据到文件的字符输出流。 2. 作用 写入字符数据&#xff1a…...

WPF 【十月的寒流】学习笔记(1):DataGrid过滤

文章目录 相关链接代码仓库前言环境DataGrid 数据筛选项目配置使用原理主要代码&#xff08;详细代码可以看我的GitHub仓库&#xff09;Models.PersonDataGirdViewDataGridViewModel 实现效果 DataGrid直接绑定CollectionViewxamlViewModel 总结 相关链接 十月的寒流 在 WPF 中…...

当Vue项目启动后,通过IP地址方式在相同网络段的其他电脑上无法访问前端页面?

当Vue项目启动后&#xff0c;通过IP地址方式在相同网络段的其他电脑上无法访问前端页面&#xff0c;可能是由以下几个原因造成的&#xff1a; 服务监听地址&#xff1a;默认情况下&#xff0c;许多开发服务器&#xff08;如Vue CLI的vue-cli-service serve&#xff09;只监听lo…...

native sql -ABAP开发从入门到精通笔记

Native SQL SQL概要 OPEN SQL读取数据 Select Select <lines> <columns>... Select signle <cols>.... where. 列去重数据 Select distinct <cols>... where... 当取多条数据时&#xff0c;select结果会保存到内表中。 Select ... into...语句的结果不…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...