P9525 [JOISC 2022] 团队竞技 题解

news/2025/4/1 16:03:27/文章来源:https://www.cnblogs.com/Scarab/p/18800406

Description

JOI 大学有 \(N\) 只海狸,他们都参与竞技编程。每只海狸有三项能力值:思考值,行动值和运气值。如果一个能力值很大,意味着他这项能力比较强大。对于第 \(i~(i\in[1,N])\) 只海狸,他的思考值为 \(X_i\),行动值为 \(Y_i\),运气值为 \(Z_i\)

今年 JOI 大学的海狸们将参与一场团体竞技编程,一支队伍由三名队员组成。Bitaro 是 JOI 大学的教练,由于团队合作很重要,Bitaro 决定从 \(N\) 只海狸中选出三只海狸组成队伍,这三只海狸要满足以下条件:

条件:每个成员都有自己的优势,这意味着每个成员都有一项能力值严格大于其他两人的对应能力值。

在所有符合条件的组队中,Bitaro 想要选一个总能力最强的队伍,一个队伍的总能力定义为:三人最大思考值,三人最大行动值和三人最大运气值之和。

请你求出,是否存在一个符合条件的组队,如果是,计算队伍总能力可能的最大值。

\(3\leq N\leq 150000\)\(1\leq X_i,Y_i,Z_i\leq 10^8\)

Solution

首先先把 \(x,y,z\) 三维分别最大的拿出来,假设 \(x\) 最大的是 \(k\)

那么如果 \(y_k\) 或者 \(z_k\) 仍然是最大的,\(k\) 怎么选都会不合法,就把 \(k\) 删掉。对 \(y\)\(z\) 最大的做同样的事情。

这么删到最后一定满足 \(x,y,z\) 最大的位置互不相同,这三个显然就是答案。

如果只剩下不超过 \(2\) 个则无解。

时间复杂度:\(O(n\log n)\)

Code

#include <bits/stdc++.h>// #define int int64_tconst int kMaxN = 1.5e5 + 5;int n;
int a[kMaxN], b[kMaxN], c[kMaxN];
std::set<std::pair<int, int>> sa, sb, sc;void del(int x) {sa.erase({a[x], x}), sb.erase({b[x], x}), sc.erase({c[x], x});
}void dickdreamer() {std::cin >> n;for (int i = 1; i <= n; ++i) {std::cin >> a[i] >> b[i] >> c[i];sa.emplace(a[i], i);sb.emplace(b[i], i);sc.emplace(c[i], i);}for (; sa.size() >= 3;) {int x = sa.rbegin()->second, y = sb.rbegin()->second, z = sc.rbegin()->second;bool fl = 1;if (b[x] == b[y] || c[x] == c[z]) del(x), fl = 0;if (a[y] == a[x] || c[y] == c[z]) del(y), fl = 0;if (a[z] == a[x] || b[z] == b[y]) del(z), fl = 0;if (fl) return void(std::cout << a[x] + b[y] + c[z] << '\n');}std::cout << "-1\n";
}int32_t main() {
#ifdef ORZXKRfreopen("in.txt", "r", stdin);freopen("out.txt", "w", stdout);
#endifstd::ios::sync_with_stdio(0), std::cin.tie(0), std::cout.tie(0);int T = 1;// std::cin >> T;while (T--) dickdreamer();// std::cerr << 1.0 * clock() / CLOCKS_PER_SEC << "s\n";return 0;
}

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

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

相关文章

关于electron如何获取dropAndDrag的文件全路径

问题 当托放文件到窗口时,React应用无法获取文件的全路径,因为新版本去掉了“path”属性。那么如何在托放文件时,获取全路径呢? 参考链接 https://www.electronjs.org/docs/latest/api/web-utils 使用webUtils 如下图,preload.js里面把webUtils.getPathForFile暴露给渲染进…

Vue中 this.$emit() 方法详解, 帮助子组件向父组件传递事件

this.$emit()是 Vue.js 中一个很有用的方法,可以帮助子组件向父组件传递事件前言 在Vue中,this.$emit()方法用于触发自定义事件。它是Vue实例的一个方法,可以在组件内部使用。 使用 this.$emit() 方法,可以向父组件发送自定义事件,并传递数据给父组件。父组件可以通过监听这…

Unity 运用新输入方法进行移动 (input System)

首先在包管理器中添加 input System重启后进入编辑项目中 找到玩家-配置 将Api兼容级别 改成 .NET Framework 活动输出处理改成 输入系统包(新)创建瓦片地图矩形 添加调色板 为瓦片地图添加Tilemap Collider 2D组件以及Composite Collider 2D(会自动添加Rigidbody 2d组件)组…

C#之Bitmap

SetPixel和GetPixel private void btnC_Click(object sender, RoutedEventArgs e) {OpenFileDialog dia = new OpenFileDialog();dia.Filter = "图像文件|*.png;*.bmp;*.jpg|所有文件|*.*";dia.Multiselect = false;if (dia.ShowDialog() == true){var fileName=dia.…

DVWA靶场 - Command Injection

Low 代码审计: 从源码中可以看出,代码只是执行了一个ping 命令,并没有对后面的参数做限制因此我们可以分别使用 ;、 |、||、&、&&进行注入;,命令行可以使用whoami、ipconfig/ifconfig、ls/dir 等Medium 代码审计: 对比代码发现,;和&& 被加入了黑名…

Linux基本使用-2

用户权限操作 1.su和exit命令 su [-] [用户名] 和 exit ==> 切换用户,不写默认为root;可用exit或者快捷键(ctrl+d)退至上一个用户 -表示切换用户后加载环境变量,建议带上 2.sudo和visudo命令 sudo 其他命令 ==> 为该命令临时授root权限,需为该用户==配置sudo认证 v…

leetcode每日一题:向字符串添加空格

题目 2109. 向字符串添加空格 给你一个下标从 0 开始的字符串 s ,以及一个下标从 0 开始的整数数组 spaces 。 数组 spaces 描述原字符串中需要添加空格的下标。每个空格都应该插入到给定索引处的字符值 之前 。例如,s = "EnjoyYourCoffee" 且 spaces = [5, 9] ,那…

jmeter 压测过程

测试策略 1、基准测试,获取无压力情况下,系统的平均响应时间; 2、采用持续并发的策略,获取系统的在不同压力下平均响应时间,TPS ; 3、在现有硬件资源下,获取到最高TPS; 4、在现有硬件资源下,持续较高TPS运行,验证系统的稳定性; 5、资源增加时,最大TPS是否可以线性增…

BaseMultiTableInnerInterceptor源码解读

本文首发在我的博客:https://blog.liuzijian.com/post/mybatis-plus-source-multi-table-inner-interceptor.html 一、概述 BaseMultiTableInnerInterceptor是MyBatis-Plus中的一个抽象类,位于mybatis-plus-jsqlparser-4.9模块中com.baomidou.mybatisplus.extension.plugins.…

test_your_nc 1(含前提简要)

前提简要: 虚拟机版本:Ubuntu24.04 pwn环境搭配如下(后面若有其他这个链接没有配置上的工具,都会在相应题目部分给出更新/分享/提示) Pwn环境搭建 都是基于个人理解,不一定完全正确!!! 题目:先启动靶机 方法一: 常规测试 直接在虚拟机nc与靶机进行连接 这道题连接后可能…

双向可控硅的基本原理阐述

双向可控硅的基本原理阐述正向--第1象限 (1)当T2、T1极间加正方向电压(即UT2〉UT1)时,如下图1-13(a)所显示。在这样的情况下,若G极无电压,则T2、T1极间不导通;若在G、T1极间加正方向电压(即UG〉UT1),T2、T1极间马上导通,电流由T2极流入,从T1极流出,这时移去G极…