首页 > 其他分享 >Bill的挑战

Bill的挑战

时间:2024-04-08 21:48:12浏览次数:24  
标签:状态 ch int 挑战 Bill ans 字符串 mod

看数据范围就知道应该要状压,也不难看出应该压缩位数的状态。所以设f[i][j]为前i位,相互匹配的字符串的状态。

那么,就会有 f[i+1][j&a[i][ch]]=(f[i+1][j&a[i][ch]+f[i][j])%mod

其中a[i][j]表示满足第i位为j所对应的字母的字符串的状态。

所以只要枚举长度为l(其中一个字符串的长度)时的状态,并检查一下当前状态下匹配的字符串的个数是否为k,再更新答案。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=16,M=51;
#define mod 1000003
int n,m,k,i,j,T,ans,f[M][(1<<N)],a[M][26];
//a[i][j]代表第i位为字母j+'0'的字符串的集合(状态);
//f[i][j]表示前i位,状态为j时答案个数;
string s[N];
int main(){
    scanf("%d",&T);
    while(T--){
        ans=0;
        memset(f,0,sizeof f);
        memset(a,0,sizeof a);
        scanf("%d%d",&n,&k);
        // cout<<"lksbvc"<<endl;
        for(i=1;i<=n;i++)cin>>s[i];
        // cout<<"!"<<endl;
        int l=s[1].length();
        for(i=0;i<l;i++){
            for(char ch='a';ch<='z';ch++){
                for(j=1;j<=n;j++){
                    if(s[j][i]=='?'||s[j][i]==ch)
                        a[i][ch-'a']|=(1<<j-1);
                }
            }
        }
        f[0][(1<<n)-1]=1;
        for(i=0;i<l;i++){
            for(j=0;j<(1<<n);j++){
                if(f[i][j]){
                    for(char ch='a';ch<='z';ch++){
                        f[i+1][(j&a[i][ch-'a'])]=(f[i+1][(j&a[i][ch-'a'])]+f[i][j])%mod;
                    }
                }
            }
        }
        for(i=0;i<(1<<n);i++){
            int tot=0;
            for(j=1;j<(1<<n);j<<=1)if(i&j)tot++;else if(tot>k)break;
            if(tot==k)ans=(ans+f[l][i])%mod;
        }
        printf("%d\n",ans);
        // cout<<"!"<<endl;
    }
    return 0;
}

标签:状态,ch,int,挑战,Bill,ans,字符串,mod
From: https://www.cnblogs.com/0shadow0/p/18122657

相关文章

  • 离职潮下的企业信息安全挑战及防范策略
    随着社会经济环境的快速变化,企业员工流动性加剧,尤其在离职潮下,企业不仅要关注人力资源配置与团队稳定性,更要重视由此引发的信息安全挑战。离职员工带走的不仅仅是职位空缺,更可能携带着大量内部敏感信息,一旦处理不当,极有可能对企业构成严重的信息安全隐患。离职员工的安全风险主......
  • AI人工智能超融合:创新浪潮下的机遇与挑战
    AI人工智能超融合:创新浪潮下的机遇与挑战一、AI人工智能超融合的技术革新随着科技的飞速发展,AI人工智能超融合作为新一代信息技术的代表,正引领着技术革新的浪潮。它将人工智能技术与超融合架构相结合,打破了传统IT架构的局限性,实现了计算、存储、网络等资源的统一管理和调度。......
  • 云数据存储:未来数据存储的无限可能与挑战
    云数据存储:未来数据存储的无限可能与挑战一、云数据存储技术的崛起与影响云数据存储技术作为近年来快速发展的技术,正以其独特的优势逐渐改变传统数据存储方式。通过将数据存储在云端,用户可以随时随地访问和管理自己的数据,无需担心硬件设备的限制。这种便捷的存储方式不仅提高......
  • 综合渗透---Billu_b0x
    开始入门综合渗透-为了巩固学习记个笔记(一开始做了一遍,因为小白为了学习还是正常思路做)先看自己ip然后扫网段(就开了两台机器去除内部ip那就只剩131了)扫它有个22和80看看80有什么一个网页尝试sql注入顺便试了几次万能密码进不去,网页源码没东西但是爆破目录出来东西......
  • 机器学习的技术原理、应用与挑战
    在数字化浪潮的推动下,机器学习作为人工智能的核心技术之一,正以前所未有的速度改变着我们的生活和工作方式。机器学习通过模拟人类的学习过程,使计算机能够从数据中提取有用信息,并做出预测或决策。本文将深入探讨机器学习的技术原理、应用领域以及面临的挑战,以展现其深度和专......
  • 挑战程序设计竞赛 2.6章习题 POJ 1930 Dead Fraction
    https://vjudge.csgrandeur.cn/problem/POJ-1930迈克在最后一刻拼命地赶着完成他的论文。在接下来的3天里,他需要将所有的研究笔记整理成较为连贯的形式。不幸的是,他注意到他在计算方面非常粗心。每当他需要进行算术运算时,他只是将其输入计算器,并将他认为相关的答案写下来。每当......
  • 机器学习每周挑战——旅游景点数据分析
    数据的截图,数据的说明:#字段数据类型#城市string#名称string#星级string#评分float#价格float#销量int#省/市/区string#坐标string#简介string#是否免费bool#具体地址string拿到数据第一步我们先导入数据......
  • 机器学习每周挑战——信用卡申请用户数据分析
    数据集的截图#字段说明#Ind_ID客户ID#Gender性别信息#Car_owner是否有车#Propert_owner是否有房产#Children子女数量#Annual_income年收入#Type_Income收入类型#Education教育程度#Marital_status婚姻状况#Housing_type居住......
  • 挑战程序设计竞赛 2.6章习题 UVA - 10006 Carmichael Numbers
    https://vjudge.csgrandeur.cn/problem/UVA-10006当今计算机科学的一个重要的领域就是密码学。有些人甚至认为密码学是计算机科学中唯一重要的领域,没有密码学生命都没有意义。阿尔瓦罗就是这样的一个人,它正在设计一个为西班牙杂烩菜饭加密的步骤。他在加密算法中应用了一......
  • 挑战算法题:四数之和
    昨天解决了三数之和,感兴趣或者不知道怎么解的同学可以先看https://www.cnblogs.com/freephp/p/18107403,今天继续试试解开:四数之和。变量变多了一个,但是难度还是medium,因为思路是类似的。具体题目如下所示:Givenanarraynumsofnintegers,returnanarrayofalltheunique......