zoukankan      html  css  js  c++  java
  • Hyperset-cf

      题意:n个串,每个串的长度为k,串只含有SET三种字母,如果有三个串符合每个位置的字母都不同或者每个位置的字母都相同,那他们就是符合条件的一组,要求统计有多少组符合题意。n(1e3) k(30)。

      思路:如果暴力枚举就是n3方会T,用map把每个串的序号存下来,通过枚举两个串,构造出第三个符合条件的串,看看有没有出现,有的话ans+1。

    AC代码:复杂度n2k

     1 #include<iostream>
     2 #include<map>
     3 #include<string.h>
     4 using namespace std;
     5 
     6 map<string,int> p;
     7 int n,k;
     8 char s[1510][35];
     9 
    10 
    11 int main(){
    12     cin>>n>>k;
    13     for(int i=1;i<=n;i++){
    14         cin>>s[i];
    15         p[s[i]]=i;
    16     }
    17     int num=0;
    18     for(int i=1;i<=n;i++){
    19         for(int j=i+1;j<=n;j++){
    20             string hjj="";
    21             for(int t=0;t<k;t++){
    22                 if(s[i][t]==s[j][t]) hjj+=s[i][t];
    23                 else{
    24                     if(s[i][t]!='E'&&s[j][t]!='E') hjj+='E';
    25                     if(s[i][t]!='T'&&s[j][t]!='T') hjj+='T';
    26                     if(s[i][t]!='S'&&s[j][t]!='S') hjj+='S';
    27                 }
    28             }
    29             if(p.count(hjj)&& p[hjj]>i&&p[hjj]>j ) num++;
    30         }
    31     }
    32     cout<<num;
    33 }
  • 相关阅读:
    鼠标经过时背景颜色变化
    鼠标经过时弹出下拉菜单
    运行最新创建的镜像:
    docker 保存更改的镜像:
    docker 导入下载模板
    docker导入本地镜像
    docker 创建镜像
    Docker 基于已有镜像的容器创建镜像
    14.2.3 InnoDB Redo Log
    14.2.3 InnoDB Redo Log
  • 原文地址:https://www.cnblogs.com/qq2210446939/p/12156612.html
Copyright © 2011-2022 走看看