刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

体操训练

【题目描述】

为了提高健康水平,同学开始进行体操训练了!

共安排了K次训练课,每次课体委都会根据N个同学的表现给他们进行排名。之后,他想知道,有多少种一个同学会“完胜”另外一个同学的情况。(如果某同学A在每次训练课中都表现得都比另一个同学B要好,那么称A"完胜"B。)

请编程计算有多少种一个同学会“完胜”另外一个同学的情况。

【输入格式】

输入的第一行包含两个正整数K和N。

以下K行每行包含整数1...N的某种排列,表示同学们的排名(同学们用编号1....N进行区分)。如果在某一行中A出现在B之前,表示同学A表现得比同学B要好。

【输出格式】

输出一行,一个整数表示有多少种一个同学会"完胜"另外一个同学的情况。


【输入样例1】

3 4

4 1 2 3

4 1 3 2

4 2 1 3

【输出样例1】

4

【样例1说明】

共有4种情况:

4号同学完胜1号同学

4号同学完胜2号同学

4号同学完胜3号同学

1号同学完胜3号同学


【输入样例2】

3 10

10 1 4 2 3 9 5 7 8 6

8 4 9 10 7 6 3 1 2 5

1 6 7 2 4 3 8 9 10 5

【输出样例2】

【数据范围】

对于60%的数据,1≤k≤20,1≤n≤100

对于100%的数据,1≤k≤1000,1≤n≤100

使用微信搜索喵呜刷题,轻松应对考试!

答案:

```#includeusing namespace std;int main()int K, N;cin >> K >> N;int a[K][N+1];for(int i=0; i> a[i][j];}}int res = 0;for(int i=1; i<=N; i++){for(int j=1; j<=N; j++){if(i != j){bool ok = true;for(int k=1; k<=K; k++){if(a[k-1][i] > a[k-1][j]){ok = false;break;}}if(ok) res++;}}}cout << res << endl;return 0;```

解析:

【喵呜刷题小喵解析】:

本题是一道统计问题,需要统计有多少种一个同学会“完胜”另外一个同学的情况。

首先,我们需要读取输入数据,包括训练次数K和同学数量N,以及每次训练课的同学排名。

然后,我们需要遍历每个同学,对于每个同学,我们再遍历其他所有同学,判断是否存在一个同学在每次训练课中都表现得比另一个同学要好,即完胜的情况。

如果存在完胜的情况,则将计数器res加1。

最后,输出res即可。

本题的关键在于如何判断完胜的情况。我们可以通过遍历每次训练课的排名,判断两个同学在每次训练课中的排名关系,如果存在某次训练课中A的排名在B之前,则A不能完胜B。

因此,我们可以使用一个bool类型的变量ok,初始化为true,如果存在某次训练课中A的排名在B之前,则将ok设置为false,并跳出内层循环。如果ok始终保持为true,则说明A完胜B。

最后,我们将所有完胜的情况的计数器res输出即可。
创作类型:
原创

本文链接:体操训练 【题目描述】 为了提高健康水平,同学开始进行体操训练了! 共安排了K次训练课,每次课体委都

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share