zoukankan      html  css  js  c++  java
  • 2020牛客暑期多校训练营(第八场)G Game SET

    2020牛客暑期多校训练营(第八场)G Game SET

    image-20200805092828221

    题解:

    image-20200805092857178

    image-20200805092905115

    比赛的时候算错复杂度了,以为可以过就交了,结果居然还过了。。。

    #include <bits/stdc++.h>
    #define inf 0x3f3f3f3f
    #define debug(x) cout<<"debug:"<<#x<<" = "<<x<<endl;
    using namespace std;
    typedef long long ll;
    int num[300][30];
    char s[110];
    vector<int>vis[300];
    
    int dfs1(int i,int j,int dep,int sum){
    //    printf("dep=%d i=%d j=%d sum=%d
    ",dep,i,j,sum);
        if(dep>4){
            for(int k=0;k<vis[sum].size();k++){
                int v = vis[sum][k];
                if(v!=i&&v!=j){
                    return v;
                }
            }
            return 0;
        }
        int x = num[i][dep];
        int y = num[j][dep];
    //    printf("x=%d y=%d
    ",x,y);
        if(x==3|y==3){
            int f = dfs1(i,j,dep+1,sum*3+0);
            if(f) return f;
            f = dfs1(i,j,dep+1,sum*3+1);
            if(f) return f;
            f = dfs1(i,j,dep+1,sum*3+2);
            if(f) return f;
        }
        else if(x==y) {
            int f = dfs1(i,j,dep+1,sum*3+y);
            if(f) return f;
        }
        else{
    //    	printf("x=%d y=%d dep=%d i=%d j=%d sum=%d
    ",x,y,dep,i,j,sum);
            int f = dfs1(i,j,dep+1,sum*3+3-x-y);
            if(f) return f;
        }
        return 0;
    }
    
    void dfs(int i,int dep,int sum){
        if(dep>4) {
            vis[sum].push_back(i);
            return ;
        }
        if(num[i][dep]==3){
            dfs(i,dep+1,sum*3+0);
            dfs(i,dep+1,sum*3+1);
            dfs(i,dep+1,sum*3+2);
        }
        else dfs(i,dep+1,sum*3+num[i][dep]);
    }
    
    
    int main(){
        int t;
        scanf("%d",&t);
        for(int cas=1;cas<=t;cas++){
            int n;
            scanf("%d",&n);
            for(int i=0;i<300;i++) vis[i].clear();
            memset(num,0,sizeof(num));
            for(int i=1;i<=n;i++){
                scanf("%s",s+1);
                int len = strlen(s+1),cnt=0;
                for(int j=1;j<=len;j++){
                    if(s[j]=='['){
                        ++cnt;
                        int x = 0;
                        if(s[j+1]=='*'){num[i][cnt]=3;continue;}
    
                        if(s[j+1]=='o'&&s[j+2]=='n'&&s[j+3]=='e') x = 0;
                        if(s[j+1]=='t'&&s[j+2]=='w'&&s[j+3]=='o') x = 1;
                        if(s[j+1]=='t'&&s[j+2]=='h'&&s[j+3]=='r') x = 2;
    
                        if(s[j+1]=='d'&&s[j+2]=='i'&&s[j+3]=='a') x = 0;
                        if(s[j+1]=='s'&&s[j+2]=='q'&&s[j+3]=='u') x = 1;
                        if(s[j+1]=='o'&&s[j+2]=='v'&&s[j+3]=='a') x = 2;
    
                        if(s[j+1]=='s'&&s[j+2]=='o'&&s[j+3]=='l') x = 0;
                        if(s[j+1]=='s'&&s[j+2]=='t'&&s[j+3]=='r') x = 1;
                        if(s[j+1]=='o'&&s[j+2]=='p'&&s[j+3]=='e') x = 2;
    
                        if(s[j+1]=='r'&&s[j+2]=='e'&&s[j+3]=='d') x = 0;
                        if(s[j+1]=='g'&&s[j+2]=='r'&&s[j+3]=='e') x = 1;
                        if(s[j+1]=='p'&&s[j+2]=='u'&&s[j+3]=='r') x = 2;
    
                        num[i][cnt]=x;
                    }
                }
                dfs(i,1,0);
            }
            ll ans1 = 0,ans2 = 0,ans3 = 0;
            for(int i=1;i<=n;i++){
                for(int j=i+1;j<=n;j++){
                    int f = dfs1(i,j,1,0);
                    if(f){
                        ans1 = i,ans2 = j,ans3= f;
                        break;
                    }
                }
                if(ans1) break;
            }
            if(!ans1) printf("Case #%d: -1
    ",cas);
            else printf("Case #%d: %lld %lld %lld
    ",cas,ans1,ans2,ans3);
        }
    }
    
    
    
  • 相关阅读:
    Qt double转换成Qstring
    QT 控件ComboBox
    前端web项目打包(二)
    前端Web打包成可执行程序
    div中下拉框无法点击展开跟选中
    div下多个table并排排列
    VS将数据保存在excel表格中
    关于windows下任务栏应用程序标签消失问题的解决办法
    Java8中map()和flatMap()的区别
    Java对象的深拷贝
  • 原文地址:https://www.cnblogs.com/EchoZQN/p/13437818.html
Copyright © 2011-2022 走看看