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 }
  • 相关阅读:
    [转载]MATLAB 图像处理命令
    html Window与document区别(轉)
    ICMP数据包结构(转)
    CString,string,char*之间的转换(转)
    word或dword区别
    VS2010 皮肤扩展
    Unicode _T和L和_TXET
    转:git 的常用命令
    git fetch 和 git pull 的区别
    mac git 命令自动补全
  • 原文地址:https://www.cnblogs.com/qq2210446939/p/12156612.html
Copyright © 2011-2022 走看看