HDU - 6008 - Worried School (模拟)

版权声明:沃斯里德小浩浩啊 https://blog.csdn.net/Healer66/article/details/82917904

题意:

模拟final的选队规则。

思路:

y从小到大枚举,因为最大才20,判断该大学如果没被选上,输出对应y,如果都满足。输出advanced!

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
typedef long long ll;
set<string> ss;
vector<string> tmp;
vector<string> v[6];
int main()
{
    int T,G,cnt = 1;
    string name;
    cin>>T;
    while(T--)
    {
        int flag = 1;
        ss.clear();
        tmp.clear();
        for(int i = 0; i<6; i++)
            v[i].clear();
        cin>>G>>name;
        for(int i = 0; i<6; i++)
        {
            string t;
            for(int j = 1; j<=20; j++)
            {
                cin>>t;
                v[i].push_back(t);
            }
        }
        for(int y = 0; y <= G; y++)
        {
            ss.clear();
            int sum=0;
            int x = G-y;
            int f=0;
            while(sum<x)
            {
                for(int i=0; i<5; i++)
                {
                    if(ss.find(v[i][f])==ss.end())
                    {
                        ss.insert(v[i][f]);
                        sum++;
                    }
                    if(sum==x)
                        break;
                }
                f++;
            }
            while(sum<G)
            {
                for(int i=0; i < 20; i++)
                {
                    if(ss.find(v[5][i])==ss.end())
                    {
                        ss.insert(v[5][i]);
                        sum++;
                    }
                    if(sum==G)
                        break;
                }
            }
            if(ss.find(name)==ss.end())
            {
                printf("Case #%d: %d\n",cnt++,y);
                flag=0;
                break;
            }
        }
        if(flag)
            printf("Case #%d: ADVANCED!\n",cnt++);

    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/Healer66/article/details/82917904
今日推荐