Worried School HDU - 6008

xiaoxiao2021-02-28  107

这个题就是前五个是中国赛区,最后一个是外国赛区,这里给你一个担心的的国家,中国赛区的取数是按照先取前五个赛区的第一再去第二第三这样,不能有重复的,我们要帮worried school看看它能不能进WF,如果对于任意的(x,y)都能使得worried school进WF,就输出“ADVANCED!”。而如果对于一些(x,y)能使得worried school进WF,另一些(x,y)不能,就输出最小的y,这个时候(x,y)恰好使得worried school不能进WF。

#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> #include <vector> #include <map> #include <queue> #include <math.h> #include <stack> #include <utility> #include <string> #include <sstream> #include <cstdlib> #include <set> #define LL long long using namespace std; const int INF = 0x3f3f3f3f; const int maxn = 10000 + 10; int dir[4][2] = {{1,0},{0,1},{-1,0},{0,-1}}; string a[10][100]; string b[100]; int g; string sch; int main() { int t; scanf("%d",&t); int kase = 0; while(t--) { cin>>g>>sch; for(int i = 1; i <= 5; i++) { for(int j = 1; j <= 20; j++) { cin>>a[i][j]; } } for(int i = 1; i <= 20; i++) { cin>>b[i]; } set<string> q; int flag1; int flag2; int y = -INF; int x; for(x = 0; x <= g; x++) { q.clear(); flag1 = 0; flag2 = 0; if(x > 0) { int num = 1; while(1) { for(int k = 1; k <= 5; k++) { if(a[k][num] == sch) flag1 = 1; q.insert(a[k][num]); if(q.size() >= x) { break; } } num++; if(q.size() >= x) break; } } if(g > x) { for(int i = 1; i <= 20; i++) { if(b[i] == sch) { flag2 = 1; } q.insert(b[i]); if(q.size() >= g) break; } } if(!flag1 && !flag2) { //cout<<y<<" "<<x<<endl; y = g - x; } } if(y != -INF) cout<<"Case #"<<++kase<<": "<<y<<endl; else cout<<"Case #"<<++kase<<": "<<"ADVANCED!"<<endl; } return 0; }

转载请注明原文地址: https://www.6miu.com/read-67519.html

最新回复(0)