1. 程式人生 > 其它 >21.10.10模擬 排名

21.10.10模擬 排名

一共有n 道題,有m 個人來參加考試,已知我每道題在所有參賽選手中的排名,問n 道題加起來計算總分的排名最小可能值與最大可能值。

顯然(一點也不顯然)
總分A比總分B高當且僅當A的每道題都比B高
於是我們統計每場最多有多少人至少一場比我高,最多有多少人一場比我低即可

const int N = 1e3 + 79;
const int M = 1e4 + 79;
int rank[N];
int n, m;

int main() {
	freopen("rank.in","r",stdin);
	freopen("rank.out","w",stdout);
	read(n);
	read(m);
	rep(i, 1, n) {
		read(rank[i]);
	}
	int tot(0);
	rep(i,1,n){
		tot+=m-rank[i];//比我高的人的人數  
	}
	out(m-min(m-1,tot),'\n');
	
	tot=0;
	rep(i,1,n){
		tot+=rank[i]-1;
	}
	out(1+min(m-1,tot),'\n');
	return 0;
}

對於求最小的排名,我們假設我每個題都考1-eps分,總分就是n-eps,如果某人的某題分數比我小,那麼就當他爆0(0+eps),那麼這個人的總分肯定小於我(n-eps)。就相當於比我大的看做1分,比我小的當做0分.

本文來自部落格園,作者:{2519},轉載請註明原文連結:https://www.cnblogs.com/QQ2519/p/15392120.html