首页 > 其他分享 >P8306 【模板】字典树

P8306 【模板】字典树

时间:2024-03-30 20:34:57浏览次数:24  
标签:P8306 int tree son ++ ans now 模板 字典

原题链接

题解

1.建议去B站上看看动画演示,你就明白怎么回事了
2.如何用代码实现呢?看完你就明白了

code

#include<bits/stdc++.h>
using namespace std;

int num=0;
int tree[3000006][75]={0};
int cnt[3000006]={0};
char s[3000006];
int ans;
int t,n,q;//放全局变量是为了加快速度,但是码风不好看
int now,son;

int inshe(char a)
{
    if(a<='z'&&a>='a') ans=a-'a'+1;
    else if(a<='Z'&&a>='A') ans=a-'A'+1+26;
    else ans=a-'0'+1+52;
    return ans;
}
void add()
{
    now=0;
    for(int i=0;s[i];i++)
    {
        son=inshe(s[i]);
        if(!tree[now][son]) tree[now][son]=++num;
        now=tree[now][son];
        cnt[now]++;//代表这个点的出现次数加一
    }
}

int searchs()
{
    now=0;
    for(int i=0;s[i];i++)
    {
        son=inshe(s[i]);
        if(!tree[now][son]) return 0;
        now=tree[now][son];
    }
    return cnt[now];
}

int main()
{
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&n,&q);
        while(n--)
        {
            scanf("%s",s);
            add();
        }
        while(q--)
        {
            scanf("%s",s);
            printf("%d\n",searchs());
        }
        for(int i=0;i<=num;i++)//从0开始,代表要把根节点也清零,但是不能用memset,太恶心了
        {
            for(int j=1;j<=70;j++) tree[i][j]=0;
            cnt[i]=0;
        }
        num=0;
    }
    return 0;
}


标签:P8306,int,tree,son,++,ans,now,模板,字典
From: https://www.cnblogs.com/pure4knowledge/p/18105984

相关文章

  • 算法模板 v1.10.5.20240330
    算法模板v1.1.1.20240115:之前历史版本已不可寻,创建第一份算法模板。v1.2.1.20240116:删除“编译”-“手动开栈”;删除“编译”-“手动开O优化”;修改“编译”-“CF模板”;删除“读写”;删除“图论”-“欧拉图”-“混合图”;删除“图论”-“可达性统计”;删除“数据类型”-“高精类”。......
  • 多态在模板类中的应用
    先看一个多态的例子:classHuman{public:virtualvoideat=0;virtual~Human(){}};classMen:publicHuman{public:virtualvoideat(){cout<<"男人"<<endl;}};classWomen:publicHuman{public:virtu......
  • 帝国CMS十合一源码/字典/成语/古诗词/二十四节气/英语单词/百家姓/范文文库/词语等
    帝国CMS十合一源码/字典/成语/古诗词/二十四节气/英语单词/百家姓/范文文库/词语等功能包含:成语大全二十四节气英语单词古诗词近反义词词语造句汉语字典英文缩写百家姓范文文库文件目录:1个数据库  1个系统源码  1个伪静态规则安装方式:把1.2G的程序上传到网......
  • 帝国cms自适应html5古诗词历史名句书籍文章资讯网站源码整站模板sinfo插件带采集会员
    (购买本专栏可免费下载栏目内所有资源不受限制,持续发布中,需要注意的是,本专栏为批量下载专用,并无法保证某款源码或者插件绝对可用,介意不要购买!购买本专栏住如有什么源码需要,可向博主私信,第二天即可发布!博主有几万资源)帝国cms自适应html5古诗词名句书籍文章资讯网站源码整站模板s......
  • 并查集模板
    目录并查集的存储结构并查集查询路径压缩并查集合并合并优化--启发式优化合并优化--按秩合并可撤销并查集算法原理重要操作实现并查集是一种巧妙优雅的数据结构,主要用于解决元素分组和不相交集合的合并和查询问题。并查集是大量的树(单个节点也算是树)经过合并生成一......
  • [web]: HTML 测试模板
    [web]: HTML 测试模板    一、HTML 测试模板内容 <!DOCTYPEhtml><html><head><metacharset="utf-8"><title>测试模板</title><scriptsrc="https://code.jquery.com/jquery-3.7.1.min.js"></script&g......
  • 类模板、函数模板、其他
    类模板、函数模板、其他static示例代码:#ifndef__COMPLEX__#define__COMPLEX__​classcomplex{  //成员函数的隐藏参数有this->形参不能写.返回值当中可以写可以不写  public: doublereal()const{returnthis->re;}  private: doubler......
  • [题解]P1439 【模板】最长公共子序列
    P1439【模板】最长公共子序列题意简述给出\(1,2,…,n\)的两个排列\(P_1\)和\(P_2\),求它们的最长公共子序列。范围限制:\(n\le10^5\)。样例53214512345输出:3。思路简述这道题看似是最长公共子序列,但是发现如果用\(O(n^2)\)的复杂度实现\(LCS\)就会时......
  • yii2 Gii使用和自定义模板
    yii2Gii使用和自定义模板配置开启giiconfig/web.php添加代码if(YII_ENV_DEV){$config['bootstrap'][]='gii';$config['modules']['gii']=['class'=>'yii\gii\Module',];}入口脚本web......
  • 软件项目管理(开发/实施/运维/安全/交付)全套文档模板
      前言:在软件项目管理中,每个阶段都有其特定的目标和活动,确保项目的顺利进行和最终的成功交付。以下是软件项目管理各个阶段的详细资料:软件项目全套文档资料下载:点我获取1.需求阶段目标:收集、分析和定义用户需求和业务目标。主要活动:需求调研:与用户沟通,了解他们的需求......