Codeforces Round 987 (Div. 2)题解 A~D

A- Penchick and Modern Monument

由于给定的数是非递增的,所以 h [ i ] ≥ h [ i + 1 ] h_[i]\geq h[i+1] h[i]h[i+1],如果 h [ i ] > h [ i + 1 ] h[i]>h[i+1] h[i]>h[i+1] 那么二者至少要改其一。因为最终要求的数是非递减的,所以最终数组内都是同一种数的方案是可行的。枚举最后会成为数组中的哪一个数即可。

void solve () {int n;cin >> n;vector <int> h(n + 1);for (int i = 1; i <= n; i++) cin >> h[i];int ans = INF;for (int i = 1; i <= n; i++) {int sum = 0;for (int j = 1; j <= n; j++) if (h[j] != h[i]) sum ++;ans = min(sum, ans);}cout << ans << endl;
}
B- Penchick and Satay Sticks

假设 1 ∼ i − 1 1\sim i-1 1i1 已经放好了,如果 p [ i ] ≠ i p[i]\neq i p[i]=i 的话,现在要把 i i i 位置放好,当且仅当 p [ i + 1 ] = i p[i+1]=i p[i+1]=i 并且 p [ i ] = i + 1 p[i]=i+1 p[i]=i+1 时才能放好。

void solve () {int n;cin >> n;vector <int> p(n + 1);for (int i = 1; i <= n; i++) cin >> p[i];for (int i = 1; i <= n; i++) {if (p[i] == i) continue;// 找到 i 在哪int pos = -1;for (int j = i + 1; j <= n; j++) {if (p[j] == i) {pos = j;break;}}if (p[i] - p[pos] == 1) {swap (p[i], p[pos]);} else {cout << "NO" << endl;return;}}cout << "YES" << endl;
}
C-Penchick and BBQ Buns

这是一道构造题,先思考一个问题,是否存在 ( x , y ) (x,y) (x,y) 使得 x , y , x + y x,y,x+y x,y,x+y 都是平方数?答案是勾股数

再思考一个问题,是否存在 ( x , y , z ) (x,y,z) (x,y,z) 使得 x , y , z , x + y , y + z , x + y + z x,y,z,x+y,y+z,x+y+z x,y,z,x+y,y+z,x+y+z 都是平方数?我打了个表发现是没有的。

回到这个问题,也就是说,最多我们用三份相同的调料包,不可能用四份及以上的调料包。

n n n 是偶数的时候,显然可以相邻地放两个相同的数。

n n n 是奇数的时候,最小的一组勾股数是 9 , 16 , 25 9,16,25 9,16,25 至少需要 n ≥ 26 n\geq26 n26 时才能出现。

n n n 是大于 26 26 26 的奇数,我们可以在 1 , 10 , 26 1,10,26 1,10,26 处放同一个数,然后再在 23 , 27 23,27 23,27 处放同一个数,剩下的数就一直相邻放即可。

n n n 是小于 26 26 26 的奇数,不存在答案。

void solve () {int n;cin >> n;if (n < 27) {if (n & 1) cout << "-1" << endl;else {for (int i = 1; i <= n; i += 2) {cout << i << ' ' << i << ' ';}cout << endl;}} else {vector <int> a(n + 1, 0);if (n & 1) {a[1] = 1;a[10] = 1;a[26] = 1;a[23] = 2;a[27] = 2;int bnt = 3;for (int i = 2; i <= n; ) {if (a[i]) {i ++;continue;}a[i] = bnt;a[i + 1] = bnt;bnt ++;i += 2;}for (int i = 28; i <= n; i += 2) {a[i] = bnt;a[i + 1] = bnt;bnt ++;}for (int i = 1; i <= n; i++) {cout << a[i] << ' ';}cout << endl;} else {for (int i = 1; i <= n; i += 2) {cout << i << ' ' << i << ' ';}cout << endl;}}
}
D-Penchick and Desert Rabbit

兔子可以往后跳到比它当前更低的树,也可以往前跳到当前比它更高的树

这预示着,操作是可逆的、互通的

设集合 A A A 是兔子在 i i i 树能跳到的所有树的集合,显然从 A A A 内的任意一棵树都一定能跳到 i i i 树。

现在的问题就是,我们怎样地遍历才能不超时、不缺漏地合并所有集合

让我们推演一下:

对于一棵最高的树 p 1 p_1 p1,它可以直接跳到它后面所有的树上,所以直接遍历即可。

然后找到次高的树 p 2 p_2 p2,需要判断是否这棵树能跳到最高的树后面,如果可以的话,那么从 p 2 ∼ p 1 p_2\sim p_1 p2p1 都可以合并。

不断重复这个过程,又因为每个数只会被合并一次,所以时间是 O ( n ) O(n) O(n) 的。

如何找到最高、次高、 ⋯ \cdots 的位置?由于值域是 1 ∼ n 1\sim n 1n,所以可以开一个 O ( n ) O(n) O(n) 的桶。

看似上面一直说合并集合,实际上我们可以发现,当前最高的树只能往右边跳,我们只要维护上一个集合的左端点,以及维护上一个集合的最小值即可。

void solve () {int n;cin >> n;vector <int> a(n + 1);vector <int> v[n + 1]; // 桶排序vector <int> ans (n + 1); // 用来计答案for (int i = 1; i <= n; i++) {cin >> a[i];v[a[i]].emplace_back(i);}int l = n + 1, minn = INF; // 最开始上个集合的左端点是 n + 1,最小值无穷大。for (int i = n; i >= 1; i--) {for (int j = v[i].size() - 1; j >= 0; j--) { // 遍历所有大小为 i 的桶if (v[i][j] >= l) continue; // 如果这个值在上个集合内部就跳过ans[v[i][j]] = i; // 首先将答案初始化为自身if (i > minn) { // 如果当前的值大于上个集合内部的最小值for (int k = v[i][j]; k < l; k++) { // 那么它能去的最大值就是上个集合的最大值ans[k] = ans[l]; // ans[l] 是上个集合内最大值,上个集合内所有数的答案都是 ans[l]minn = min(minn, a[k]); // 更新最小值}l = v[i][j]; // 更新左端点} else {int temp = INF; // 如果无法访问到上一个集合内部for (int k = v[i][j]; k < l; k++) { // 那么后续的集合肯定无法访问到上一个集合内部ans[k] = ans[v[i][j]]; // 此时新开一个集合temp = min(temp, a[k]);}minn = temp; l = v[i][j];}}}for (int i = 1; i <= n; i++) {cout << ans[i] << ' ';}cout << endl;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/69636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文阅读(九):通过概率图模型建立连锁不平衡模型和进行关联研究:最新进展访问之旅

1.论文链接&#xff1a;Modeling Linkage Disequilibrium and Performing Association Studies through Probabilistic Graphical Models: a Visiting Tour of Recent Advances 摘要&#xff1a; 本章对概率图模型&#xff08;PGMs&#xff09;的最新进展进行了深入的回顾&…

php twig模板引擎详细使用教程

php twig模板引擎 1. 什么是Twig模板引擎 Twig是一个强大且灵活的PHP模板引擎&#xff0c;它提供了一种更简洁和可扩展的方法来创建PHP应用程序的视图层。Twig模板引擎旨在将设计与业务逻辑分离&#xff0c;并为开发人员提供一种更加清晰和易于维护的方式来构建网页。Twig由S…

蓝桥杯之c++入门(一)【C++入门】

目录 前言5. 算术操作符5.1 算术操作符5.2 浮点数的除法5.3 负数取模5.4 数值溢出5.5 练习练习1&#xff1a;计算 ( a b ) ⋆ c (ab)^{\star}c (ab)⋆c练习2&#xff1a;带余除法练习3&#xff1a;整数个位练习4&#xff1a;整数十位练习5&#xff1a;时间转换练习6&#xff…

设想中的计算机语言:可执行对象的构造函数和析构函数

经典 C语言的内存管理&#xff0c;是一块一块的&#xff0c;用malloc分配内存&#xff0c;用free释放内存。 C有对象&#xff0c;一个对象是好几片内存&#xff0c;用指针连接起来&#xff0c;用构造函数和析构函数管理对象。 创意 如图&#xff0c;是一个“可执行对象”&am…

SAP系统中的主要采购类型/采购模式总结

在 SAP 系统中,采购类型主要有以下几种: 一、标准采购订单(Standard Purchase Order) 描述:这是最常用的采购类型,用于一次性采购货物或服务。采购部门根据需求部门提出的采购申请,向供应商发出采购订单,明确规定了采购的物料、数量、价格、交货日期等详细信息。 应…

SpringCloud系列教程:微服务的未来(十七)监听Nacos配置变更、更新路由、实现动态路由

前言 在微服务架构中&#xff0c;API 网关是各个服务之间的入口点&#xff0c;承担着路由、负载均衡、安全认证等重要功能。为了实现动态的路由配置管理&#xff0c;通常需要通过中心化的配置管理系统来实现灵活的路由更新&#xff0c;而无需重启网关服务。Nacos 作为一个开源…

pycharm(2)

conda 我下载安装conda的时候产生了各种问题&#xff0c;最终我发现&#xff0c;打开杀毒软件会有阻碍 cuda的版本问题很大&#xff0c;我尝试多个版本之后&#xff0c;发现anaconda3-2024.06.1-windows-x86_64安装了之后不会报错&#xff0c;另外pycharm的版本也一直有问题&a…

DeepSeek-R1:通过强化学习激励大型语言模型(LLMs)的推理能力

摘要 我们推出了第一代推理模型&#xff1a;DeepSeek-R1-Zero和DeepSeek-R1。DeepSeek-R1-Zero是一个未经监督微调&#xff08;SFT&#xff09;作为初步步骤&#xff0c;而是通过大规模强化学习&#xff08;RL&#xff09;训练的模型&#xff0c;展现出卓越的推理能力。通过强…

Maven的下载安装配置

maven的下载安装配置 maven是什么 Maven 是一个用于 Java 平台的 自动化构建工具&#xff0c;由 Apache 组织提供。它不仅可以用作包管理&#xff0c;还支持项目的开发、打包、测试及部署等一系列行为 Maven的核心功能 项目构建生命周期管理&#xff1a;Maven定义了项目构建…

< OS 有关 > 阿里云 几个小时前 使用密钥替换 SSH 密码认证后, 发现主机正在被“攻击” 分析与应对

信息来源&#xff1a; 文件&#xff1a;/var/log/auth.log 因为在 sshd_config 配置文件中&#xff0c;已经定义 LogLevel INFO 部分内容&#xff1a; 2025-01-27T18:18:55.68272708:00 jpn sshd[15891]: Received disconnect from 45.194.37.171 port 58954:11: Bye Bye […

解决幂等问题的4种方案

幂等问题引入与准备工作 幂等概念&#xff1a;幂等指多次操作影响仅与首次执行结果相同&#xff0c;重复执行不会对系统造成额外变化。业务场景问题&#xff1a;以网站金币充值为例&#xff0c;因网络不稳定&#xff0c;支付宝支付成功的异步通知可能多次发送&#xff0c;若商家…

LitServe - 闪电般快速服务AI模型⚡

文章目录 一、关于 LitServe二、快速启动定义服务器测试服务器LLM 服务小结 三、特色示例功能特点 四、性能表现五、托管选项 一、关于 LitServe LitServe是一个易于使用、灵活的服务引擎&#xff0c;适用于基于FastAPI构建的AI模型。批处理、流式传输和GPU自动缩放等功能消除…

小程序电商运营内容真实性增强策略及开源链动2+1模式AI智能名片S2B2C商城系统源码的应用探索

摘要&#xff1a;随着互联网技术的不断发展&#xff0c;小程序电商已成为现代商业的重要组成部分。然而&#xff0c;如何在竞争激烈的市场中增强小程序内容的真实性&#xff0c;提高用户信任度&#xff0c;成为电商运营者面临的一大挑战。本文首先探讨了通过图片、视频等方式增…

【HarmonyOS之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(三)

目录 1 -> 生命周期 1.1 -> 应用生命周期 1.2 -> 页面生命周期 2 -> 资源限定与访问 2.1 -> 资源限定词 2.2 -> 资源限定词的命名要求 2.3 -> 限定词与设备状态的匹配规则 2.4 -> 引用JS模块内resources资源 3 -> 多语言支持 3.1 -> 定…

Linux网络 | 理解TCP面向字节流、打通socket与文件的关系

前言&#xff1a;我们经常说TCP是面向字节流的&#xff0c; TCP是面向字节流的。 但是&#xff0c; 到底是什么事面向字节流呢&#xff1f; 另外&#xff0c; 我们知道sockfd其实就是文件fd。 但是&#xff0c;为什么sockfd是文件fd呢&#xff1f; 这些问题都在本节内容中的到回…

FireFox | Google Chrome | Microsoft Edge 禁用更新 final版

之前的方式要么失效&#xff0c;要么对设备有要求&#xff0c;这次梳理一下对设备、环境几乎没有要求的通用方式&#xff0c;universal & final 版。 1.Firefox 方式 FireFox火狐浏览器企业策略禁止更新_火狐浏览器禁止更新-CSDN博客 这应该是目前最好用的方式。火狐也…

大数据学习之Kafka消息队列、Spark分布式计算框架一

Kafka消息队列 章节一.kafka入门 4.kafka入门_消息队列两种模式 5.kafka入门_架构相关名词 Kafka 入门 _ 架构相关名词 事件 记录了世界或您的业务中 “ 发生了某事 ” 的事实。在文档中 也称为记录或消息。当您向 Kafka 读取或写入数据时&#xff0c;您以事件的 形式执行…

深度学习指标可视化案例

TensorBoard 代码案例&#xff1a;from torch.utils.tensorboard import SummaryWriter import torch import torchvision from torchvision import datasets, transforms# 设置TensorBoard日志路径 writer SummaryWriter(runs/mnist)# 加载数据集 transform transforms.Comp…

Linux文件原生操作

Linux 中一切皆文件&#xff0c;那么 Linux 文件是什么&#xff1f; 在 Linux 中的文件 可以是&#xff1a;传统意义上的有序数据集合&#xff0c;即&#xff1a;文件系统中的物理文件 也可以是&#xff1a;设备&#xff0c;管道&#xff0c;内存。。。(Linux 管理的一切对象…

基于springboot+vue的流浪动物救助系统的设计与实现

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…