题解 P5831 【[USACO19DEC]Cow Gymnastics奶牛体操】
Talanton_Cerydra · · 题解
这是2019年USACO的第一题
(我居然是此题第一篇题解的发布者)
下面简述主要想法:
先开两个二维数组,一个来存储数据,另一个【i】【j】来存储第i天第j头奶牛的排名
再通过暴力来求出个数
/*八卦几句:(不感兴趣可跳过)
上次我在我的一篇题解中用了我同学的名字作变量名,于是他又在他的题解里用了我的名字……
所以我又要拿他的名字再作一次变量名【嘿嘿!】
*/
行了,上代码了:
#include <bits/stdc++.h>//不解释了
using namespace std;
int n,k;//输入数据
int zjl=0;//计数器———同学名字(呵呵)
int a[11][21],c[11][21];//a输入数据,c存排名
int main()
{
//读入部分
scanf("%d%d",&k,&n);//输入k和n
for(int i=1;i<=k;i++)//双层循环读入
{
for(int j=1;j<=n;j++)
{
scanf("%d",&a[i][j]);//输入a数组
c[i][a[i][j]]=j;//这里存储第i天第j头奶牛的排名
}
}
//以下为暴力阶段
for(int i=1;i<=n;i++)//三层暴力
{
for(int j=1;j<=n;j++)
{
int cnt=0;//内部计数器
for(int x=1;x<=k;x++)//枚举每一天
{
if(c[x][i]>c[x][j])//如果排名是大于
{
cnt++;
}
}
if(cnt==k)//cnt等于k说明是每一天排名都一致,可以算作是一致的一对
{
zjl++;//于是乎,计数器自增
}
}
}
printf("%d",zjl);//输出“一致的”对数
return 0;//结束
}
大家别急着抢前排,看懂了再说话,并且禁止抄袭!