Cow Gymnastics (题解)
2023-03-09 22:37:29
发布于:广东
这是我在ACGO社区的第三个题解,不喜勿喷,题目叫Cow Gymnastics ,连接在底下了,请大家看完,谢谢
原题链接
链接
描述
In order to improve their physical fitness, the cows have taken up gymnastics! Farmer John designates his favorite cow Bessie to coach the N other cows and to assess their progress as they learn various gymnastic skills. In each of K practice sessions (1≤K≤10), Bessie ranks the N cows according to their performance (1≤N≤20). Afterward, she is curious about the consistency in these rankings. A pair of two distinct cows is consistent if one cow did better than the other one in every practice session.
Help Bessie compute the total number of consistent pairs.。
输入输出
The first line of the input file contains two positive integers K and N. The next K lines will each contain the integers 1…N in some order, indicating the rankings of the cows (cows are identified by the numbers 1…N). If A appears before B in one of these lines, that means cow A did better than cow B.
Output, on a single line, the number of consistent pairs.
样例
input
3 4
4 1 2 3
4 1 3 2
4 2 1 3
output
4
题目大意
有K组排名和N个人,若每一次排名中x比y都排在前面则说明x比y优秀。输出一共有多少组优秀的组合。
思路
模拟
思路是这样的 ,类似邻接矩阵,如果cmp[x][y]>0并且cmp[y][x]等于0就说明x至少一次排在y前面,但是y从没在x前面,也就是x一直在y前。
那么在读入排名的时候就对cmp数组进行赋值,每组排名每读入一个数,就循环使cmp[当前数字][后面的所有数]都自增。
最后判断的时候也是对每一个数字进行循环检查,检查他和后面的数字是否符合上述cmp[x][y]的关系。符合就计数一次。
代码
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<memory.h>
using namespace std;
int cmp[30][30];
int num[30];
int main()
{
int n,m;
cin>>m>>n;
memset(cmp,0,sizeof cmp);
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
cin>>num[j];
}
for(int j=1;j<=n-1;j++)
{
for(int k=j+1;k<=n;k++)
{
cmp[num[j]][num[k]]++;
}
}
}
int ans=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i==j)continue;
if(cmp[i][j]>0&&cmp[j][i]==0)ans++;
}
}
cout<<ans<<endl;
return 0;
}
上次我题解的代码不是全AC,而这次全部都是AC,需要的话大家可以抄,如果把这道题翻译过来的话的哈,并不是很难,一下就可以做出来,(当然你需要英文十级),但这次题解花费了我10个小时(包括唱跳的时间)的时间。总之,你学废了吗
全部评论 2
百度翻译:
:)这事我擅长2023-06-28 来自 陕西
0你学废了吗?
2023-03-09 来自 广东
0
有帮助,赞一个