题解:UVA12015 手气不错

· · 题解

蒟蒻第一次写题解,还请多指教~

题目大意

题目要求我们根据给出的 10 个网址和对应的相关性,分析“手气不错”功能可能选择的所有网址。

思路

题目中说“手气不错”功能将选择相关性最高的网页,如果存在多个网页具有相同的最高相关性,则所有这些网页都有可能被选中。也就是说,我们需要在给出的 10 个网址相关性中,查找最大的相关性,并输出所有跟这个最大相关性相同的相关性所对应的网址(有点绕)。按此逻辑,我们只需要求出最大相关性后,再遍历每一个网址对应的相关性时比较它们大小就可以了。

代码

题目要求按输入顺序输出,我们只需要让两个循环都保持从小到大即可。(考虑到这是一道黄题,而且 t 的数据范围没给出,因此默认 t 为 int 类型,时间应该不会爆)

#include <bits/stdc++.h>//万能头
using namespace std;
string s[15];//用字符串存网址
int v[15];//网址的相关性
int t;
int main(){
    cin >> t;
    int x=0;//用于记录循环次数 
    while(t--){//t组数据,t次循环
        x++;
        int maxx=-1;//存最大相关性,初始值要最小,方便取最大值. 
        for(int i=1;i<=10;i++){//每组测试数据10个网址 
            cin >> s[i];
            cin >> v[i];
            maxx=max(maxx,v[i]);//取自己和输入值的大者,10次循环后即是最大相关性 
        }
        cout << "Case #" << x << ":" << endl;//第x次循环,第x次输出 
        for(int i=1;i<=10;i++){//再循环一遍 
            if(v[i]==maxx){//若有跟最大值一样大的相关性,则此相关性对应的网址也可能被选中 
                cout << s[i] << endl;
            }
        }
    }//t组数据循环完毕,结束
    return 0;//养成好习惯 
}

显然不会爆