前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2020牛客暑期多校训练营(第八场)

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

作者头像
wenzhuan
发布2022-08-15 12:41:58
2400
发布2022-08-15 12:41:58
举报
文章被收录于专栏:你会烧尽还是结冰

8.03 又写模拟写哭了的牛客8

G-Game SET

题意

给定一些卡片。一张卡片有 4 个属性,每个属性有 4 种样式,用 123 * 表示。 * 可以替换为 123 的任意一个。定义一个卡片集为 3 张每个属性样式全一样或者全不一样的卡片,找出给定卡片的任意卡片集。

思路

暴力可以过,那就非常简单呗

再也不想写模拟了,真的恶心

代码

代码语言:javascript
复制
#include<bits/stdc++.h>
#define pf printf
#define sc(x) scanf("%d", &x)
#define scs(x) scanf("%s", x)
#define mst(a,x) memset(a, x, sizeof(a))
#define rep(i,s,e) for(int i=(s); i<(e); ++i)
using namespace std;
char s[100];
int vis[5][300];
int solve(int cas){
    pf("Case #%d: ",cas); mst(vis,0); 
    int n,ff(0); sc(n); rep(i,1,n+1){
        scs(s+1); int len=strlen(s+1);
        int cnt(0); string t="";
        rep(j,1,len+1){
            if(s[j]=='[') continue;
            if(s[j]==']'){
                if(cnt==0){
                    if(t=="*") vis[cnt][i]=-1; 
                    else if(t=="one") vis[cnt][i]=1; 
                    else if(t=="two") vis[cnt][i]=2; 
                    else if(t=="three") vis[cnt][i]=3; 
                }
                else if(cnt==1){
                    if(t=="*") vis[cnt][i]=-1; 
                    else if(t=="diamond") vis[cnt][i]=1; 
                    else if(t=="squiggle") vis[cnt][i]=2; 
                    else if(t=="oval") vis[cnt][i]=3; 
                }
                else if(cnt==2){
                    if(t=="*") vis[cnt][i]=-1; 
                    else if(t=="solid") vis[cnt][i]=1; 
                    else if(t=="striped") vis[cnt][i]=2; 
                    else if(t=="open") vis[cnt][i]=3; 
                }
                else if(cnt==3){
                    if(t=="*") vis[cnt][i]=-1; 
                    else if(t=="red") vis[cnt][i]=1; 
                    else if(t=="green") vis[cnt][i]=2; 
                    else if(t=="purple") vis[cnt][i]=3; 
                }
                t=""; cnt++; 
                continue; 
            }
            t+=s[j];
        }
    }
    rep(i,1,n+1) rep(j,i+1,n+1) rep(k,j+1,n+1){
        int fl[4]; mst(fl,0); rep(u,0,4){
            if(vis[u][i]==-1||vis[u][j]==-1||vis[u][k]==-1){ fl[u]=1; continue; } 
            else if(vis[u][i]==vis[u][j]&&vis[u][j]==vis[u][k]){ fl[u]=1; continue; } 
            else if(vis[u][i]!=vis[u][j]&&vis[u][j]!=vis[u][k]&&vis[u][i]!=vis[u][k]){ fl[u]=1; continue; } 
        } if(fl[0]+fl[1]+fl[2]+fl[3]==4) return pf("%d %d %d\n",i,j,k);
    }
    return pf("-1\n");
}
int main(){
    int _,cas(0); sc(_); while(_--) solve(++cas);
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • G-Game SET
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档