富豪凯匹配串

bitset的用法:https://www.cnblogs.com/magisk/p/8809922.html

https://blog.csdn.net/caipengbenren/article/details/90443961

例题汇总 https://blog.csdn.net/weixin_38686780/article/details/89377729

连接:富豪凯匹配串

题解:根据与运算的特点,只有为两个1时为1,否则为0。根据题意当‘_’遇到0/1时都是匹配成功的,我们不妨把‘‘_’设置为0,其余设置为1,然后让这个数组和输入的n个数组运算,得到的然后判断得到的串与输入的串是否相同。

AC代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1E3+7;
bitset<N>arr[N],q,p;
int main(){
    int n,m;
    cin>>n>>m;
    char s[N];
    for(int i=1;i<=n;i++) {
        scanf("%s",s);
        for(int j=0;j<m;j++){
            if(s[j]==‘0‘)    arr[i][j]=0;
            else arr[i][j]=1;
        }
    }

    int qq;
    cin>>qq;
    while(qq--){
        string s;
        cin>>s;
        for(int i=0;i<m;i++){
            if(s[i]==‘_‘) q[i]=p[i]=0;
            else {
                p[i]=1;//将p串除了"_"外,其余全都设置为1,然后让其余输入的做与运算,并判断和输入的q是否相同
                if(s[i]==‘1‘) {
                    q[i]=1;
                }
                else q[i]=0;
            }
        }
        int ans=0;
        for(int i=1;i<=n;i++){
            if((p&arr[i])==q)     ans++;
        }
        cout<<ans<<endl;
    }
    return 0;
}

原文地址:https://www.cnblogs.com/Accepting/p/11721896.html

时间: 2024-08-25 14:26:34

富豪凯匹配串的相关文章

hdu2896 病毒侵袭 AC自动机入门题 N(N &lt;= 500)个长度不大于200的模式串(保证所有的模式串都不相同), M(M &lt;= 1000)个长度不大于10000的待匹配串,问待匹配串中有哪几个模式串,

/** 题目:hdu2896 病毒侵袭 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2896 题意:N(N <= 500)个长度不大于200的模式串(保证所有的模式串都不相同), M(M <= 1000)个长度不大于10000的待匹配串,问待匹配串中有哪几个模式串, 题目保证每个待匹配串中最多有三个模式串. 思路:ac自动机做法,字符为可见字符,那么直接就是他们的ascii值作为每一个字符的标志.最多128: 由于不超过三个,所以找到3个就可以re

hdu3065 病毒侵袭持续中 AC自动机入门题 N(N &lt;= 1000)个长度不大于50的模式串(保证所有的模式串都不相同), 一个长度不大于2000000的待匹配串,求模式串在待匹配串中的出现次数。

/** 题目:hdu3065 病毒侵袭持续中 链接:http://acm.hdu.edu.cn/showproblem.php?pid=3065 题意:N(N <= 1000)个长度不大于50的模式串(保证所有的模式串都不相同), 一个长度不大于2000000的待匹配串,求模式串在待匹配串中的出现次数. 思路:ac自动机做发,val标记每一个病毒串编号,通过print函数统计每一个病毒出现的次数. AC自动机好文章:http://www.cppblog.com/menjitianya/archi

广工校赛——GG的匹配串

Description 2015年广东工业大学ACM校赛要来~\(≧▽≦)/~辣辣辣,作为校赛的出题人之一,GG想出了一道水题来考考大家.相信小伙伴们都学过字符串匹配,于是字符串匹配的水题就诞生辣!GG给出了一段长度为N的大写字母序列,现在他要你修改这一段字母序列,使得这段字母序列上最前面的K个字母组成的序列与最后面的K个字母组成的序列一一匹配.  例如对于序列“ATUUUUAC”和K = 2,可以通过将第二个字母修改为“C”,使得最前面的两个字母与最后面的两个字母都为“AC”,当然 还存在其他

GG的匹配串

Description 2015年广东工业大学ACM校赛要来~\(≧▽≦)/~辣辣辣,作为校赛的出题人之一,GG想出了一道水题来考考大家.相信小伙伴们都学过字符串匹配,于是字符串匹配的水题就诞生辣!GG给出了一段长度为N的大写字母序列,现在他要你修改这一段字母序列,使得这段字母序列上最前面的K个字母组成的序列与最后面的K个字母组成的序列一一匹配.  例如对于序列“ATUUUUAC”和K = 2,可以通过将第二个字母修改为“C”,使得最前面的两个字母与最后面的两个字母都为“AC”,当然 还存在其他

GG的匹配串 ______(广东工业大学2015校赛初赛)

Description 2015年广东工业大学ACM校赛要来~\(≧▽≦)/~辣辣辣,作为校赛的出题人之一,GG想出了一道水题来考考大家.相信小伙伴们都学过字符串匹配,于是字符串匹配的水题就诞生辣!GG给出了一段长度为N的大写字母序列,现在他要你修改这一段字母序列,使得这段字母序列上最前面的K个字母组成的序列与最后面的K个字母组成的序列一一匹配. 例如对于序列"ATUUUUAC"和K = 2,可以通过将第二个字母修改为"C",使得最前面的两个字母与最后面的两个字母都

内存 匹配串

/*返回t在s中的位置,若未找到则返回-1*/int strindex(char* s,char* t) { int i, j, k; for(i = 0; s[i] != '\0'; i++) for(k = i,j = 0; s[k]=t[j] && s[k]!='\0'; k++,j++ ) ; if(j > 0 && t[k]=='\0') return i; return -1; } 以上函数有一个特点是只能查找c定义的字符串类型.随意给定一个patter(

KMP算法,查询匹配串的个数

想不到时隔两年回来重新学习KMP算法还是那么难,不过理解了大概,把例程贴上来,如果是求数量只需要加个count变量记录即可. #include"stdio.h" #include"string.h" void makeNext(const char P[],int next[]) { int q,k; int m=strlen(P); next[0]=0; for(q=1,k=0;q<m;q++) { while(k>0&&P[q]!=P

COJ 1287 求匹配串在模式串中出现的次数

这里要在后缀自动机的节点中维护一个从到达当前位置出现的字符串总个数 1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 5 using namespace std; 6 #define N 200010 7 #define M 26 8 9 struct SamNode{ 10 SamNode *son[26] , *f; 11 int l , sc; 12 void init(){ 13 f

codeforce 338 C 巧妙处理序列匹配问题

这道题就是给你两个序列A,和B, 然后问你求出一个用最少的Ade子序列组成B的方法..例如A = abc B = abccba, 那么就可以用两个A表示B, 一个是正的序列, 另外一个是负的序列.对于这个问题我们先做一个小小的转换,我们将A倒置变为A1,然后就是用递增的A和A1序列表示B,我们用dp[2][i][j]表示从A(A1)[i],B[j]开始最长一致序列的长度, 然后求解答案的时候可以使用贪心的方法解决,具体详见代码: #include <cstdio> #include <a