1 条题解

  • 0
    @ 2025-8-24 22:14:46

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Talanton_Cerydra
    敲代码康复训练ing

    搬运于2025-08-24 22:14:46,当前版本为作者最后更新于2019-12-20 23:48:45,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    这是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;//结束
    }
    

    大家别急着抢前排,看懂了再说话,并且禁止抄袭!

    • 1

    信息

    ID
    4835
    时间
    1000ms
    内存
    125MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者