P10223 [COCI 2023/2024 #3] Eurokod 题解
解法
模拟题意即可。
先按组长评出的顺序赋上得分。
然后将其他成员给出的评分进行排序,然后赋上相应的得分。
这一步可以使用 pair<int, int>
进行存储。
最后再按总得分为第一关键字,成员评分为第二关键字排序。
这里可以用自定义结构体存储。
按题意输出即可。
Code
#include<bits/stdc++.h> using namespace std; struct st { int u, v, id; st(int U, int V, int ID): u(U), v(V), id(ID) {} bool operator<(st b) const {return u==b.u?v>b.v:u>b.u;} }; // 用于存储的结构体 vector<st> lis; vector<pair<int, int> > vc; int main() { int n; cin>>n; for(int i=1;i<=n;i++) lis.emplace_back(0, 0, i); for(int i=1, t;i<=n;i++) cin>>t, lis[t-1].u=n+1-i; // 赋上组长给的得分 for(int i=1, t;i<=n;i++) cin>>t, vc.emplace_back(t, i); sort(vc.begin(), vc.end()); // 排序 int tot=1; for(auto [v, id]:vc) lis[id-1].u+=(lis[id-1].v=(tot++)); // 赋上成员给的得分 sort(lis.begin(), lis.end()); // 输出前的排序 tot=1; for(auto [u, v, id]:lis) cout<<format("{}. Kod{:0>2} ({})\n", tot++, id, u); // c++20 的新格式化函数 }
本文作者:Jimmy-LEEE
本文链接:https://www.cnblogs.com/redacted-area/p/18379533
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
题解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步