Rank List

为方便题意理解,先简单介绍一下ACM比赛的排名规则。
  在ACM赛制中,排名的依据标准有两个,一是队伍的解题数,二是队伍解题耗费的时间。解题数为排名的主要依据,解出更多题目的队伍排名更高;而对于解题数相同的队伍,根据他们解题耗时进行排名,耗时短的队伍排名更高。
  现给出某次ACM比赛的队伍最终成绩,即解题数和解题耗时,其中存在并列的队伍,也就是说解题数和解题耗时完全相同(这种情况正规比赛不会出现,本题是假设)。要求回答出排某一名次的队伍共存在多少并列。
输入
  输入第一行包含两个整数n和k(1 ≤ k ≤ n ≤ 50),其中n表示队伍数,k表示需要查询并列的名次。
  接下来是n行,表示n个队伍的成绩,每行包含两个整数p和t (1 ≤ p, t ≤ 50),p表示队伍解题数,t表示队伍解题耗时。
输出
  输出一个整数,即排第k名的队伍存在的并列队伍总数。
输入样例1
7 2
4 10
4 10
4 10
3 20
2 1
2 1
1 10
输出样例1
3
输入样例2
5 4
3 1
3 1
5 3
3 1
3 1
输出样例2
4
提示
  ①所谓某队的并列队伍总数是包含这个队伍自身的。
  ②说明一下本题中“第k名”的含义:拿一个有序的数列举例,5 4 4 4 3 3,由于有多个“4”和“3”存在,所以对于“第2大的”或“第3大的”或“第4大的”的数字,都是4,“第5大的”和“第6大的”也都是3。题目中“第k名”的队伍也是同理。
  
思路:若所做题数和时间相同,做同样操作最后的数是相同的,得出的数据存到一个数组里边,,排序,而后判断第几名的个数为多少。

#include"stdio.h"
#include"algorithm"
#include"string.h"
using namespace std;
int main()
{
	int n,k,a[105],x,y;
	while(~scanf("%d %d",&n,&k))
	{
		memset(a,0,sizeof(a));
		int sum=0;
		for(int i=0;i<n;i++)
		{
			scanf("%d %d",&x,&y);
			a[i]=x*50-y;
		}
		sort(a,a+n);
		for(int i=0;i<n;i++)
		{	
			if(a[i]==a[n-k])
			{
				sum++;
			}
		}
		printf("%d\n",sum);
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ACM/ICPC比赛成绩会按照一定的规则计算各位参赛者的名次并实时显示排行榜,计算规则主要参考解题的数量及罚时,解题数量越多,罚时越少,则排名越高。 解题数量很容易计算,只需考察比赛中标记为“Accepted”的题数即可。罚时计算则相对复杂,对于提交到竞赛系统中的每道题目,系统会给出一个罚时,为从比赛开始到该题提交的代码第一次被“Accepted”的时间。请注意,只是第一次“Accepted”。对于“Accepted”之前的每次提交,都有20分钟的罚时,但如果该题目最终未解出,则不计罚时。 先在有一个比赛的题目通过情况记录,请生成该比赛的排行榜。 示例输入: 2008-04-25 18:00:00 2008-04-25 23:30:00 1000 1001 1002 1003 1004 38 602203621 1002 Accepted 756K 30MS C++ 2008-04-25 18:04:59 37 liheyuan 1002 Wrong_Answer 768K 10MS C++ 2008-04-25 18:28:05 36 ftest 1000 Accepted 888K 10MS C++ 2008-04-25 21:30:32 35 ftest 1000 Accepted 904K 10MS C++ 2008-04-25 21:30:55 34 gaojianwei 1000 Accepted 768K 10MS C 2008-04-25 22:15:58 33 gaojianwei 1001 Wrong_Answer 904K 10MS C 2008-04-25 22:18:01 32 gaojianwei 1004 Accepted 768K 10MS C 2008-04-25 22:24:23 31 lzz 1000 Accepted 904K 10MS C++ 2008-04-25 23:29:27 30 lzz 1001 Wrong_Answer 904K 10MS C++ 2008-04-25 23:30:17 示例输出: Rank Name Solved 1000 1001 1002 1003 1004 Penalty 1 gaojianwei 2 4:15:58 -1 0 0 4:24:23 8:40:21 2 602203621 1 0 0 0:04:59 0 0 0:04:59 3 ftest 1 3:30:32 0 0 0 0 3:30:32 4 lzz 1 5:29:27 0 0 0 0 5:29:27 5 liheyuan 0 0 0 -1 0 0 0:00:00
在Python中,rank函数用于计算数值数据的排名。通过该函数可以将一组数值按照大小进行排名,并返回每个数值的排名值。rank函数可以应用于Series对象和DataFrame对象。 对于Series对象,rank函数的语法如下: Series.rank(axis=0,method='average',numeric_only=None,na_option='keep',ascending=True,pct=False) 其中,参数axis表示排名的轴,默认为0,即按列进行排名;参数method表示破坏平级关系的方式,默认为'average',即分配平均排名;参数numeric_only表示是否仅针对数值进行排名,默认为None,即对所有数据进行排名;参数na_option表示对缺失值的处理方式,默认为'keep',即保留缺失值;参数ascending表示排名是否按升序排列,默认为True,即升序排列;参数pct表示是否返回相对于总数的百分比排名,默认为False,即返回绝对排名。 对于DataFrame对象,rank函数的语法如下: DataFrame.rank(axis=0, method='average', numeric_only=NoDefault.no_default, na_option='keep', ascending=True, pct=False) 其中,参数axis表示排名的轴,默认为0,即按列进行排名;其他参数的含义与Series的rank函数相同。 因此,Python中的rank函数可以用于计算数值数据的排名,并根据指定的参数进行破坏平级关系的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python函数:rank()](https://blog.csdn.net/Ajdidfj/article/details/123136959)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [python pandas rank()详解](https://blog.csdn.net/m0_37813354/article/details/103068573)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值