CodeForces 24B F1 Champions (简单题)

news/2024/11/29 22:51:22/

题目类型  简单题


题目意思
输入 n 场赛车比赛的前 m 名的选手的名字 其中只有前10名的选手可以得到分数(1 <= n <= 20, 1 <= m <= 50)

现在有两种排序方法 输出两种排序方法中排在第1的人的名字
方法一 先按 得分排序 得分相同的 按排在第1的次数排序(多的排在前面) 如果次数相同就按排在第2的次数排序 直到比较出来为止
方法二 先按排在第1的次数排序 次数相同的话按得分高低排序 得分相同的按排在第2的次数排序 还是相同的按排在第3的次数排序 直到比较出来为止

解题方法
统计信息然后排序即可

注意
每场比赛只有前10名可以得分 其他名次得0分但是依然可以得到 相应的名次的次数 (注意数组越界什么的)

参考代码 - 有疑问的地方在下方留言 看到会尽快回复的
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <set>
#include <map>
#include <algorithm>
#include <vector>
#include <string>using namespace std;typedef long long LL;const int MAXN = 1e3 + 10;struct P {string name;int s;int w;vector<int>rank;
}p[MAXN];bool cmp1(const P & a,const P & b) {if(a.s == b.s) {int i=0;while(1) {if(a.rank[i] == b.rank[i]) {i++;if(a.rank.size() == i) return 0;else if(b.rank.size() == i) return 1;continue;}else return a.rank[i] < b.rank[i];}}return a.s > b.s;
}bool cmp2(const P & a,const P & b) {if(a.w == b.w) {if(a.s == b.s) {int i = 0;while(1) {if(a.rank[i] == b.rank[i]) {i++;if(a.rank.size() == i) return 0;else if(b.rank.size() == i) return 1;continue;}else return a.rank[i] < b.rank[i];}}else return a.s > b.s;}return a.w > b.w;
}int main() {int n;int a[100] = {25, 18, 15, 12, 10, 8, 6, 4, 2, 1};while(cin>>n) {for( int i=0; i<MAXN; i++ ) p[i].rank.clear(), p[i].s = 0;set<string>str;set<string>::iterator ps;int k = 0;for( int i=0; i<n; i++ ) {int m;string name;cin>>m;for( int j=0; j<m; j++ ) {cin>>name;if(str.find(name) == str.end()) {str.insert(name);p[k].name = name;p[k].s = a[j];if(j == 0) p[k].w++;//cout<<"--"<<p[0].name<<" "<<p[0].s<<endl;p[k].rank.push_back(j);k++;}else {for( int h=0; h<k; h++ ) {if(name == p[h].name) {p[h].s += a[j];if(j == 0) p[h].w++;p[h].rank.push_back(j);break;}}}}}for( int i=0; i<k; i++ ) sort(p[i].rank.begin(), p[i].rank.end());//for( int i=0; i<k; i++ ) cout<<p[i].name<<" "<<p[i].s<<endl;sort(p, p + k, cmp1);cout<<p[0].name<<endl;sort(p, p + k, cmp2);cout<<p[0].name<<endl;}return 0;
}

http://www.ppmy.cn/news/194786.html

相关文章

PS封装H264码流

H264的PS封装 一个完整的ps包封装: PSheader PS system header PS system Map PES header h264 data 因为一般视频数据都是采用rtp打包发送&#xff0c;所以这里我就把ps封装和rtp封装放在一起讲 1. 视频关键帧的封装 RTP PSheader PS system header PS system Map…

warning LNK4210 存在 .CRT 节 可能有未处理的静态初始值设定项或结束符

warning LNK4210: 存在 .CRT 节&#xff1b;可能有未处理的静态初始值设定项或结束符 原因是全局变量的构造函数无法在启动时被调用。 通常是编译环境导致&#xff0c;两个解决方法。 一个是切换到正确的编译环境&#xff0c;二是避免直接定义需要构造函数的全局变量。 在 C…

【vulhub】Weblogic_SSRF(CVE-2014-4210)漏洞复现

这个真的不知道怎么回事&#xff0c;就是不能反弹shell&#xff0c;可能是我没有redis吧 还是直接放参考链接吧 https://github.com/vulhub/vulhub/blob/master/weblogic/ssrf/README.md https://blog.csdn.net/LTtiandd/article/details/99592832 https://dyblogs.cn/dy/2275.…

写驱动程序的时候warning LNK4210报错

具体原因我也不知道 但是解决方法是:在驱动中&#xff0c;有些结构体不能全局初始化,不让他全局初始化即可......................................

基于芯鼎盛TX4210设计的DC-DC升压芯片DEMO说明

基于芯鼎盛TX4210设计的DC-DC升压芯片DEMO说明 DC-DC升压芯片TX4210原理图 DC-DC升压芯片TX4210电路板 TX4210 DEMO 板实测数据 和 转换效率 参考 DC-DC升压芯片TX4210电路测量 本 DEMO 为 TX4210 制作的演示板&#xff0c;用于 DC 输入 12V&#xff0c;输出电压22.5V&#xff…

i510210u和i54210u哪个好

i5-10210U采用14nm工艺&#xff0c;4核心8线程&#xff0c;频率1.6-4.2GHz&#xff0c;6MB三级缓存&#xff0c;采用UHD核显&#xff08;24 EU&#xff09;&#xff0c;TDP 15W&#xff0c;内存频率由DDR4-2666。选i54210u还是i5 10210u这些点很重要!看完你就知道了 http://www…

TMC4210-I:步进驱控芯片

概况与特性&#xff1a; TMC4210是一种1轴小型化步进电机控制器&#xff0c;具有行业领先的特性。它通过步进/方向接口控制电机。基于目标位置和速度&#xff0c;可以在运行中改变执行所有实时的关键任务。TMC4210为可靠的操作提供了高水平的控制功能。4线串行外围接口允许与单…

4210 数字(进制转化)

1. 问题描述&#xff1a; 给定一个大于 2 的十进制正整数 A。该数字在 2∼A−1 进制表示下的各位数字之和均可以求出。例如&#xff0c;数字 123 在 16 进制表示下&#xff0c;共有 2 位&#xff1a;第 1 位是 7&#xff0c;第二位是 11&#xff0c;各位数字之和为 18。现在&a…