Codeforces Round 967 (Div. 2) ABC

server/2025/1/16 11:17:23/

背景

光速卡D,前三道其实都不难

A题: Make All Equal

题意

每次可以选定两个相邻的元素,删除其中任意一个,问使得数组中元素全都相等的最小操作次数

思路

大水题,我们只需要找到数组中出现最多的元素,将其他的删除即可

代码

inline void solve() {int n; cin >> n;map<int, int> cnt;int maxv = 0;for (int i = 1; i <= n; i ++ ) {int x; cin >> x;cnt[x] += 1;if (cnt[x] > maxv) maxv = cnt[x];}cout << n - maxv << endl;return;
}

B题:Generate Permutation

题意

给定一个大小为n,值全都为-1的数组a。两台机器分别从左往右和从右往左对数组进行扫描。

对于一次扫描称为一次操作

两者在扫描的过程中,可以将-1更改为当前数组中未出现的最小正整数,问能否构造出一个排列p,使得两台机器在构造排列p时花费的操作次数相同

思路

无论如何,都是要先将p中的1先整出来的

所以,对于偶数大小的数组,这个1该放哪里呢?其次,放了以后,对于2来说,无论放哪,两台机器中总有一台要减少一次操作次数,3,4...同理。这样奇数次(从2开始,到n结束),不可能操作次数相等

那么就只有奇数大小的情况了。

贪心地想,我们肯定将1放中间

记2放在1的右边(左边也行)

那么3该放哪呢?1的左边

然后再考虑4和5,发现只要将4放到右边,5放到左边即可

3 1 2

5 3 1 2 4

代码

inline void solve() {int n; cin >> n;if (n % 2 == 0) cout << -1 << endl;else {for (int i = n; i >= 1; i -= 2) {cout << i << ' ';}for (int i = 2; i < n; i += 2) {cout << i << ' ';}cout << endl;}return;
}

C题:Guess The Tree

题意

交互题,每次可以询问两个点a和b,会告知使得|d(a,x)-d(b,x)|最小的x

思路

按照题目要求,我们要确定n-1条边,那我们该如何利用交互来确定边呢?

只能是ask(a,b)返回a和b其中一个的情况,我们才可以知道a和b有连边

那么再看要求,15n次询问,这个15就很灵性,最简单的想法是2的15次,这个比1000大

这么想,如果它是连成一条的,树的直径最大是1000,每次告知的信息相当于就是在做一次二分一样的

所以对于某个点,我们一直进行ask,把结果拿来一直ask即可

代码

int ask(int a, int b) {cout << "? " << a << ' ' << b << endl;cout.flush();int res; cin >> res;return res;
}
inline void solve() {int n; cin >> n;vector<PII> res;for (int i = 2; i <= n; i ++ ) {int t = 1;for (int j = 0; j < 15; j ++ ) {t = ask(t, i);}res.push_back({t, i});}cout << "! ";for (auto [x, y] : res) {cout << x << ' ' << y << ' ';}cout.flush();return;
}

 

 


http://www.ppmy.cn/server/103451.html

相关文章

Nginx配置负载均衡

使用 Nginx 来实现将 Spring Boot 应用部署在两台服务器上提高性能&#xff0c;可以按照以下步骤进行操作&#xff1a; 一、在两台服务器上部署 Spring Boot 应用 确保两台服务器上都安装了相同版本的 Java 运行环境&#xff08;JRE 或 JDK&#xff09;。将构建好的 Spring B…

基于Redisson实现延迟队列

简介 延迟队列是一种常见的消息队列实现&#xff0c;用于处理需要在指定时间后执行的任务。Redisson是一个基于Redis的Java驻内存数据网格&#xff08;In-Memory Data Grid&#xff09;和远程计算解决方案&#xff0c;提供了丰富的分布式数据结构和服务&#xff0c;包括延迟队…

管理软件包工具RPM 与 YUM的基本介绍和使用

&#x1f600;前言 本篇博文是关于管理软件包工具RPM 与 YUM的基本介绍和使用&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满…

期货模拟交易系统考核选拔系统资管分仓有哪些特点?

分仓账户本身是为了风险管理和资金管理的目的而设立的&#xff0c;‌通过将资金分散到不同的账户中&#xff0c;‌可以降低整体风险&#xff0c;‌避免某个合约的亏损对整个资金造成过大的影响。‌这种分散投资的策略有助于提高交易的安全性。‌然而&#xff0c;‌分仓账户的安…

ModStartCMS v8.8.0 富文本编辑器升级,后台报表统计优化

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用&#xff0c;支持后台一键快速安装&#xff0c;让开发者能快的实现业务功能开发。 系统完全开源&#xff0c;基于 Apache 2.0 开源协议&#xff0c;免费且不限制商业使用。 功能特性 丰富的模块市…

Linux系统 SSL/TLS 升级

前期准备&#xff0c;安装包&#xff1a; tools.zip zlib-1.2.11.tar.gz openssl-3.3.1.tar.gz openssh-9.8p1.tar.gz ---------- 使用管理员帐户登陆&#xff1a; root/****** 查看版本号&#xff1a; ssl版本查询方法&#xff1a; openssl version ssh版本查询方法&…

jpg怎么转换成pdf?6个简单方法,实现jpg转换成pdf

你是否也曾想将jpg图片转换为pdf格式文档呢&#xff1f;亦或者在处理文档或制作报告时&#xff0c;不知道怎么才能更快地将多张图片整合成一个pdf文件呢&#xff1f;如果你正在寻找简单快速的方法&#xff0c;又有哪些工具可以帮助您完成图片转pdf呢&#xff1f;别着急&#xf…

格式化的硬盘能恢复数据吗?硬盘恢复数据有什么要求吗

在数字时代&#xff0c;硬盘格式化通常是为了清理硬盘空间、解决系统问题或准备安装新系统。然而&#xff0c;这个过程中一个常见的问题是&#xff1a;硬盘格式化的硬盘能恢复数据吗&#xff1f;本文将深入探讨这个问题&#xff0c;为您提供关于硬盘格式化后数据恢复的详细信息…