VP Codeforces Round 983 (Div. 2)

news/2025/2/4 15:58:39/文章来源:https://www.cnblogs.com/maburb/p/18698261

A. Circuit

题意:有\(n\)个灯和\(2n\)个开关,每个开关控制一个灯,每个灯被两个开关控制,如果控制一个灯的两个开关中恰好有一个打开,这个灯就会亮。你不知道具体哪些开关控制哪些灯。现在给你\(2n\)个灯的开关状态,求最少亮多少灯和最多亮多少灯。

最少的状态就是尽量让两个打开的开关控制一个灯,设有\(cnt\)个开关打开了,那么最小数就是\(cnt \% 2\)
如果\(cnt <= n\),那么可以让每个打开的开关控制不同的灯,答案是\(cnt\),否则尽量让最少的灯被两个开关控制,答案是\(n - (cnt - n)\)

点击查看代码
void solve() {int n;std::cin >> n;std::vector<int> a(2 * n);for (int i = 0; i < 2 * n; ++ i) {std::cin >> a[i];}int cnt = std::count(a.begin(), a.end(), 1);std::cout << cnt % 2 << " ";if (cnt <= n) {std::cout << cnt << "\n";} else {std::cout << (n - (cnt - n)) << "\n";}
}

B. Medians

题意:给你一个序列\(a = \{1, 2, ..., n - 1, n\}\),你要把序列分成\(m\)块,其中\(m\)是奇数。并且每一块的长度都是奇数。最后结果等于每一块的中位数组成的新序列的中位数,你要使得这个数为\(k\)

特判\(n==1\)的情况。
然后如果\(k == 1 || k == n\),则无解。因为\(k\)一定出现在最两侧。
否则看\((k - 1)\)\((n - k)\)是不是奇偶性相同。如果不同的话,左边的块数一定不会等于右边的块数,\(k\)也不可能是中位数。
否则分奇偶讨论即可,保证左右两边块数相同,\(k\)单独占一块。

点击查看代码
void solve() {int n;std::cin >> n;std::vector<int> a(n);for (int i = 0; i < n; ++ i) {std::cin >> a[i];}int ans = n;std::sort(a.begin(), a.end());for (int i = 0, l = 0, r = 0; i + 1 < n; ++ i) {while (r < n && a[r] < a[i] + a[i + 1]) {++ r;}while (a[l] + a[l + 1] <= a[r - 1]) {++ l;}ans = std::min(ans, l + (n - r));}std::cout << ans << "\n";
}

C. Trinity

题意:给你一个数组,你每次可以让其中一个数变成另一个数。你要使得任意三个数都可以组成三角形。求最小操作数。

排序后枚举最小的两个数,因为答案最小,那么这两个数一定是相邻的,双指针维护即可。

点击查看代码
void solve() {int n;std::cin >> n;std::vector<int> a(n);for (int i = 0; i < n; ++ i) {std::cin >> a[i];}int ans = n;std::sort(a.begin(), a.end());for (int i = 0, l = 0, r = 0; i + 1 < n; ++ i) {while (r < n && a[r] < a[i] + a[i + 1]) {++ r;}while (a[l] + a[l + 1] <= a[r - 1]) {++ l;}ans = std::min(ans, l + (n - r));}std::cout << ans << "\n";
}

D. Genokraken

题意:交互题。有一棵树,除了\(0\)号点外其他点都最多有两条边相连。其中\(1\)号点必有儿子,并且如果\(u, v(u < v)\), 则\(fa_u < fa_v\)。你每次询问两个节点得到它们的路径是否经过了\(0\),最多询问\(2n - 6\)次。求出这棵树。

主要利用编号大的节点的父亲更大的性质,从大到小找,每次找\(i\)的父亲,\(i-1\)的父亲一定比\(i\)的编号小,于是可以从\(f_i - 1\)开始找,这样每个点最多被询问一次,总共\(n - 2\)次询问。

点击查看代码
int ask(int a, int b) {std::cout << "? " << a << " " << b << std::endl;int res;std::cin >> res;return res;
}void solve() {int n;std::cin >> n;std::vector<int> ans(n);for (int i = n - 1, j = n - 2; i ; -- i) {while (j > 0 && ask(i, j)) {-- j;}if (j > 0) {ans[i] = j;-- j;}}std::cout << "!";for (int i = 1; i < n; ++ i) {std::cout << " " << ans[i];}std::cout << std::endl;
}

E. Balanced

待补

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

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

相关文章

2025 PVC

短线有波上涨

静态代理模式:代码世界的“替身演员”

静态代理是代理模式的一种**实现方式**,其特点是**代理类在编译时就已经确定**,代理类的代码是在程序编译阶段生成的,而不是运行时动态生成。一、关于静态代理 1.1 简介 静态代理是代理模式的一种实现方式,其特点是代理类在编译时就已经确定,代理类的代码是在程序编译阶段…

一个 .NET 开源、免费、功能强大的Windows应用卸载神器

前言 今天大姚给大家分享一个基于 .NET 开源(Apache License)、免费、功能强大的Windows应用卸载神器:Bulk Crap Uninstaller。 项目介绍 Bulk Crap Uninstaller 是一款基于 .NET 开源(Apache License)、免费、功能强大的Windows应用卸载工具,旨在帮助用户快速且有效地移…

强化学习驱动的自适应模型选择与融合用于监督学习

图片来源:Unsplash 上的 Agence Olloweb引言 机器学习模型的选择一直是一个挑战。无论是预测股票价格、诊断疾病,还是优化营销活动,问题始终是:哪个模型最适合我的数据? 传统上,我们依赖交叉验证来测试多个模型——XGBoost、LGBM、随机森林等——然后根据验证性能选择最佳…

Python 与 PostgreSQL 集成:深入 psycopg2 的应用与实践

title: Python 与 PostgreSQL 集成:深入 psycopg2 的应用与实践 date: 2025/2/4 updated: 2025/2/4 author: cmdragon excerpt: PostgreSQL 作为开源关系型数据库的佼佼者,因其强大的功能与性能被广泛应用于各种项目中。而 Python 则因其简洁易用的语法、丰富的库和强大的数…

Gitea Enterprise 23.0.0 (Linux, macOS, Windows) - 本地部署的企业级 Gti 服务

Gitea Enterprise 23.0.0 (Linux, macOS, Windows) - 本地部署的企业级 Gti 服务Gitea Enterprise 23.0.0 (Linux, macOS, Windows) - 本地部署的企业级 Gti 服务 The Premier Enterprise Solution for Self-Hosted Git Service 请访问原文链接:https://sysin.org/blog/gitea/…

【跟着阿舜学音乐-笔记】2.4电鼓及其他打击乐器

2.4电鼓及其他打击乐器 滚镲:使用滚奏的方式打击吊镲(由弱到强不断打击在自然地由强到弱) 2.4.1电鼓 电鼓分为两种来源,一种为合成器合成,另一种则是由架子鼓发出后进行电声的处理。 电鼓的军鼓会稍显薄弱,有时由采取再垫一轨的方式。此外,电鼓的踩镲在一些风格曲目中打…

[Nuxt] Rendering mode

A Nuxt app can be rendered in various modes. The default standard mode is simply called SSR. Specifically, it means Server-Side Rendering on request. “on request” means whenever the user clicks on an external link or enters a URL in the address bar to ac…

ASP.NET Core 中,认证(Authentication)和授权(Authorization)

在 ASP.NET Core 中,认证(Authentication)和授权(Authorization)是两个非常重要的概念。它们确保用户能够安全地访问应用程序,并且在访问过程中能按其权限被正确地控制。接下来,我将详细解释这两个概念,并且如何在 ASP.NET Core 中实现它们。 1. 认证(Authentication)…

ASP.NET Core 中,Cookie 认证在集群环境下的应用

在 ASP.NET Core 中,Cookie 认证在集群环境下的应用通常会遇到一些挑战。主要的问题是 Cookie 存储在客户端的浏览器中,而认证信息(比如 Session 或身份令牌)通常是保存在 Cookie 中,多个应用实例需要共享这些 Cookie 信息,以便用户在集群中各个实例间无缝切换。 1. 集群…

ASP.NET Core 中使用 Cookie 身份验证

在 ASP.NET Core 中使用 Cookie 身份验证,通常是为了实现用户的登录和授权。以下是配置 Cookie 身份验证的步骤。 1. 安装必要的 NuGet 包 首先,确保项目中包含 Microsoft.AspNetCore.Authentication.Cookies 包。你可以通过 NuGet 包管理器或命令行安装它: dotnet add pack…

GDB调试(一)

GDB调试 GDB简介 GDB的功能 GDB(GNU Debugger)是用于调试 C、C++ 等语言的强大工具。它允许开发者执行以下操作:启动程序并按照预期条件暂停(如断点处)。 检查程序中的变量和内存状态。 单步执行代码,观察每一步的变化。 修改运行中的变量值以测试不同的假设。 调试程序崩…