P9525 [JOISC2022] 团队竞技 题解
题意:
给定
考虑如果没有
具体的,priority_queue
即可。
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
int n;
struct Node
{
int a, b, c;
Node(int a, int b, int c): a(a), b(b), c(c){}
Node(){}
}p[N];
bool del[N];
int main()
{
ios::sync_with_stdio(0), cin.tie(0);
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> p[i].a >> p[i].b >> p[i].c;
}
priority_queue<pair<int, int>> p1, p2, p3;
for (int i = 1; i <= n; i++)
{
p1.push(make_pair(p[i].a, i));
p2.push(make_pair(p[i].b, i));
p3.push(make_pair(p[i].c, i));
}
for (int i = 1; i <= n; i++)
{
while (p1.size() && del[p1.top().second]) p1.pop();
while (p2.size() && del[p2.top().second]) p2.pop();
while (p3.size() && del[p3.top().second]) p3.pop();
vector<pair<int, Node>> vv;
vv.emplace_back(make_pair(p1.top().second, p[p1.top().second]));
vv.emplace_back(make_pair(p2.top().second, p[p2.top().second]));
vv.emplace_back(make_pair(p3.top().second, p[p3.top().second]));
//cout << i << " " << p1.top().second << " " << p2.top().second << " " << p3.top().second << "\n";
for (int j = 0; j < 3; j++)
{
int c = 0;
bool fg = 1;
for (int k = 0; k < 3; k++)
{
if (j == k) continue;
fg &= (vv[j].second.a >= vv[k].second.a);
}
c += fg;
fg = 1;
for (int k = 0; k < 3; k++)
{
if (j == k) continue;
fg &= (vv[j].second.b >= vv[k].second.b);
}
c += fg;
fg = 1;
for (int k = 0; k < 3; k++)
{
if (j == k) continue;
fg &= (vv[j].second.c >= vv[k].second.c);
}
c += fg;
if (c >= 2)
{
del[vv[j].first] = 1;
goto E;
}
}
cout << max({vv[0].second.a, vv[1].second.a, vv[2].second.a}) + max({vv[0].second.b, vv[1].second.b, vv[2].second.b}) + max({vv[0].second.c, vv[1].second.c, vv[2].second.c}) << "\n";
return 0;
E:;
}
cout << "-1\n";
return 0;
}
分类:
题解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现