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


    传送门:Game SET

    题意

    一套牌有四种属性,每种属性都有三种特征,shapes (one, two, or three), shape (diamond, squiggle, or oval), shading (solid, striped, or open),  color (red, green, or purple),如果是*,可以选任意一种。给出n套牌,每套牌给出[<number>][<shape>][<shading>][<color>],问有没有三张牌符合同一属性的特征要么全都相同,要么全都不同。

    题解

    暴力瞎搞就好了,这应该才是签到题吧....
    先用map将字符串转换为数字记录下每张牌的四种属性,然后三个循环找三张牌,遍历属性,如果全都符合条件就输出三张牌的编号,如果没有符合条件的就输出-1。
    如果遇到了 * ,如果另外两张相同,那么 * 可以和它们相同,否则和它们都不同,所以该属性只要有一个 * 符合条件。
    如果没有 * ,就要么全都相同,要么全都不同符合条件。

    代码

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3  
     4 map<string,int>p;
     5 int a[10010][10];
     6  
     7 int main()
     8 {
     9     p["*"]=0;
    10     p["one"]=1;
    11     p["two"]=2;
    12     p["three"]=3;
    13     p["diamond"]=1;
    14     p["squiggle"]=2;
    15     p["oval"]=3;
    16     p["solid"]=1;
    17     p["striped"]=2;
    18     p["open"]=3;
    19     p["red"]=1;
    20     p["green"]=2;
    21     p["purple"]=3;
    22  
    23     int t;
    24     int tt=1;
    25     cin>>t;
    26     while(t--){
    27         int n;
    28         cin>>n;
    29         string s;
    30         for(int i=0;i<n;i++){
    31             cin>>s;
    32             string ss;
    33             int cnt=0;
    34             for(int j=0;j<s.size();j++){
    35                 if(s[j]=='[') ss="",cnt++;
    36                 else if(s[j]==']') a[i+1][cnt]=p[ss];
    37                 else ss+=s[j];
    38             }
    39         }
    40         cout<<"Case #"<<tt++<<": ";
    41         int flag=0;
    42         for(int i=1;i<=n;i++){
    43             for(int j=i+1;j<=n;j++){
    44                 for(int k=j+1;k<=n;k++){
    45                     int g=0;
    46                     for(int l=1;l<=4;l++){
    47                         if(a[i][l]==0||a[j][l]==0||a[k][l]==0) continue;
    48                         if(a[i][l]==a[j][l]&&a[i][l]==a[k][l]) continue;
    49                         if(a[i][l]!=a[k][l]&&a[i][l]!=a[j][l]&&a[j][l]!=a[k][l]) continue;
    50                         g=1;
    51                         break;
    52                     }
    53                     if(!g){
    54                         cout<<i<<' '<<j<<' '<<k<<endl;
    55                         flag=1;
    56                     }
    57                     if(flag) break;
    58                 }
    59                 if(flag) break;
    60             }
    61             if(flag) break;
    62         }
    63         if(!flag) cout<<-1<<endl;
    64     }
    65     return 0;
    66 }
  • 相关阅读:
    web.xml文件详解
    SQLSERVER dbo解释
    sqlserver BULK INSERT
    google 基站定位api
    Sqlserver中Select和Set区别
    SQL Server优化50法
    ibatis常用16条SQL
    面向对象 -- 三大特性之继承 补充 抽象类 接口类
    面向对象 -- 三大特性之继承
    面向对象 -- 类的组合
  • 原文地址:https://www.cnblogs.com/lilibuxiangtle/p/13430650.html
Copyright © 2020-2023  润新知