• 题目 Hyperset


    题意

    字符串内只有 S,E,T三种字符

    对于三个字符串的每一位,如果同一位字符要么都相同,要么都不同,则为一组满足条件的字符串

    问:对于n个字符串,有多少组满足条件。

    输入

    第一行输入n , k;接下来n行输入n个字符串

    输出

    输出满足条件的组数

    题解:暴力+二分

     1 #include<bits/stdc++.h>
     2 #define ll long long
     3 using namespace std;
     4 const int MA=1e5+5;
     5 string str[MA];
     6 
     7 int main(){
     8     int n,k;
     9     cin>>n>>k;
    10     for(int i=0;i<n;i++){
    11         cin>>str[i];
    12     }
    13     sort(str,str+n);
    14     int sum=0;
    15     for(int i=0;i<n;i++){
    16         for(int j=i+1;j<n;j++){
    17             string s="";
    18             for(int t=0;t<k;t++){
    19                 if(str[i][t]==str[j][t])s+=str[i][t];
    20                 else{
    21                     if(str[i][t]!='S'&&str[j][t]!='S')s+='S';
    22                     else if(str[i][t]!='T'&&str[j][t]!='T')s+='T';
    23                     else if(str[i][t]!='E'&&str[j][t]!='E')s+='E';
    24                 }
    25             }
    26             int l=0,r=n-1;
    27             while(l<r){
    28                 int mid=(l+r)/2;
    29                 if(str[mid].compare(s)>=0)r=mid;
    30                 else l=mid+1;
    31             }
    32             if(str[l].compare(s)==0){
    33                 sum++;
    34             }
    35         }
    36     }
    37     cout<<sum/3<<endl;
    38     return 0;
    39 }
  • 相关阅读:
    vscode调试pomelo和pomelo使用vscode调试
    linux修改单个进程的系统时间
    python之路目录
    python之前端
    python之ORM操作
    python之redis和memcache操作
    python之消息队列
    python之协程与IO操作
    python之进程与线程
    python之网络编程
  • 原文地址:https://www.cnblogs.com/w-w-t/p/12222096.html
Copyright © 2020-2023  润新知