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

【贪心】P9525 [JOIST 2022] 团队竞技 / Team Contest 题解

Problem

\(\text{Description}\)

给定 \(n\) 个含有三元组 \((x_i ,y_i ,z_i)\),需要从中选出三个不同的对编号 \(i\)\(j\)\(k\),使得 \(x_i +y_j +z_k\) 最大,并且 \(x_i > \max\{x_j ,x_k\} ,y_j > \max\{y_i ,y_k\} ,z_k > \max\{z_i ,z_j\}\)(我们记作条件 \(A\)),求这个最大值。

\(1\le n\le 1.5\times 10^5\)

\(\text{Solution}\)

像今年 S T1 一样,我们考虑先把 \(x,y,z\) 这三个属性最大的三元组的编号找出来,然后反悔。

如果这三个编号互不相同,直接输出即可。

否则肯定是某个三元组太强了,被选择了两次。

我们记这个三元组的编号为 \(a\),假设它在 \(x\)\(y\) 属性下是最大的。

如果继续选 \(a\),那么它占据了两个属性的最大值,也就是有至少一个除了 \(a\) 的编号会不满足条件 \(A\)

那么我们标记不合法即可,后面我们就不选了。

然后考虑贪心,我们每次肯定要去对应属性最大的那个编号,这个用优先队列维护即可。

namespace lolcrying {#define PII pair <int ,int>priority_queue < PII > q0 ,q1 ,q2;signed main(){n = read() ;up(i ,1 ,n){a[i] = read() ,b[i] = read() ,c[i] = read();q0.push({a[i] ,i});q1.push({b[i] ,i});q2.push({c[i] ,i});}while(1) {if(q0.empty() || q1.empty() || q2.empty()) { // 为空就选不下去了,不合法。puts("-1") ; return 0 ;}int x = q0.top().second ,y = q1.top().second ,z = q2.top().second;bool f = 1;if(b[x] == b[y] || c[x] == c[z]) nope[x] = 1 ,f = 0;if(a[x] == a[y] || c[y] == c[z]) nope[y] = 1 ,f = 0;if(a[x] == a[z] || b[y] == b[z]) nope[z] = 1 ,f = 0;// f = 0,表示 x,y,z 中有三元组太【强】了,所以不能成为答案。if(f) {writeln(a[x] + b[y] + c[z]) ;return 0 ;}while(!q0.empty() && nope[q0.top().second]) q0.pop();while(!q1.empty() && nope[q1.top().second]) q1.pop();while(!q2.empty() && nope[q2.top().second]) q2.pop();
// 如果最大值不能选就弹出,注意是 while 不是 if,仔细想一下就知道了。}puts("-1"); // 无解。return 0 ;}}

\(\text{Mistake}\)

  • priority < PII > 写成 priority < PII ,vector < PII > ,greater < PII > >

  • nope[q0/q1/q2.top().second] 写成 !nope[q0/q1/q2.top().second]

\(\text{Reflecting}\)

  • 写代码的时候要保持清晰的头脑,算法步骤要在脑子里清晰地呈现。

  • 这种题要想到贪心,先啥都不管选最优然后反悔,考场 S T1 10 min 想到 + 写完现在这题想不到,值得深思。

http://www.jsqmd.com/news/43995/

相关文章:

  • noip9
  • 常见的steam游戏的营销错误
  • MX Round 26 解题报告
  • linux c 编译命令
  • N8N工作流中文转换神器!一键转中文
  • 今天学习黑马的Java基础
  • linux c 线程编程
  • 容器网络虚拟化
  • 整体二分学习笔记
  • CF1721F Matching Reduction
  • 树上求值 tree
  • DL 2 自动微分模块
  • 《计算机网络》学习心得
  • NSSCTF刷题日记
  • 2025防晒品牌TOP8精准推荐:按肤质与场景科学选择
  • 黑马程序员SpringCloud微服务开发与实战- Docker基础-02
  • 详细介绍:UE4_Niagara基础实例—15、粒子发射器之间的通信
  • 2025年目前口碑好的继承官司律师律所有哪些,遗产继承律师事务所/北京最好的继承律师/婚姻律师事务所/继承律师/北京继承纠纷律师律所哪家强
  • 老友记第一季人物表
  • 五、平台设备与平台驱动
  • make指定安装目录
  • 【转载】银河麒麟(Kylin)操作系统上移植Qt 5.6.3与QtCreator 4.2.0的完整指南
  • wsl 与 docker相关内容
  • 2025.11.18模拟赛
  • linux c 开发 工具
  • 第一章 拓扑空间与连续映射
  • JOISC 口糊记录
  • 基于epoll的io复用管理,一种文件监听方案 2 - 教程
  • Token快过期的三种续期方案 - 详解
  • 重组蛋白科研试剂技术综述:结构特性、功能机制与实验体系应用