1 条题解

  • 0
    @ 2026-5-19 0:55:13

    题意:

    观察样例,可以发现各各动物之间的特点有相同也有不相同的。而题目求的是最大值,所以只需要比较每两个动物之间,相同特点的数量,最后比较出最大值加一。因为答案只为一个动物,所以需要加上另一个动物没有的特点。

    思路:

    看下题,发现 2N1002 \leq N \leq1001K1001 \leq K \leq 100.

    于是直接就可以联想到暴力解题。

    1. 动物名称没有用处,所以只输入不用存储。但是 kk 和动物特点需要存储,因为后面需要进行比较。

    2. 每两个动物之间进行比较,比较出某两个动物之间,特点相同数最多的值。

    3. 将这个值 +1+1.

    按照这个思路,只需要 44 个循环就足够了,所以完全不用担心超时。

    #include <bits/stdc++.h>
    using namespace std;
    string a[110][110];
    int k[110];
    int main()
    {
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
        {
        	string s;
        	cin>>s>>k[i];
        	for(int j=1;j<=k[i];j++)
        		cin>>a[i][j];
        }
        int maxn=0;
        for(int i=1;i<=n;i++)
        {
        	for(int j=i+1;j<=n;j++)
        	{
        		int ans=0;
        		for(int z=1;z<=k[i];z++)
        			for(int l=1;l<=k[j];l++)
        				if(a[i][z]==a[j][l])
        					ans++;
        		if(maxn<=ans)
        			maxn=ans;
        	}
        }
        cout<<maxn+1<<endl;
        return 0;
    }
    
    

    建议评橙

    • 1

    [USACO19JAN] Guess the Animal B【思维】

    信息

    ID
    6965
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    175
    已通过
    10
    上传者