Remember The Word-Trie

2023-11-01

题目: UVaLive 3942

#include<cstdio>
#include<cstring>

using namespace std;

const int MAX = 4010 * 100;         //题目中说过每个样例S<4000 单个长度<100
const int MOD = 20071027;
int sz = 1;                         //用来记录每个字母的顺序
char str;
int ch[MAX][26];
int flag[MAX];                      //用来标识每个单词是否已经结束
int ans[300010];

void clearw(){
    sz = 1;    
    memset(ch[0],0,sizeof(ch[0]));
    memset(flag,0,sizeof(flag));
}
//创建一个新的字母节点
int creatw(int u){
    memset(ch[sz],0,sizeof(ch[sz]));
    flag[sz] = u;
    return  sz++;
}                       
/*插入函数:用来插入新的单词,如果在这一层已经存在这个字母了,继续往下摸,否则就
 *创建一个新的节点,在单词的最后设立一个结束的哨兵。这样建成一棵字典树。
 */
int insertw(char *s){
    int u = 0;
    int len = strlen(s);
    for(int i = 0;i < len;i++){
        int v = s[i] - 'a';
        if(!ch[u][v])
            ch[u][v] = creatw(0);
        u = ch[u][v];
    }
    flag[u] = 1;
}
/*查找函数:根据给定的深度和字符串开始搜索。依然是用s[i]-'a'来判断那个对应的位置
 *是不是符合条件,如果符合则这一层的就加上,因为所有这一层是不是有符合长度的字符串
 *都已经被压缩在flag中去了,所以只要flag是真,那就是可以相加,然后逐层相加,取模
 *即可
 */
void findw(int con,char *s){
    int u = 0;
    int deep = 0;
    for(; *s; s++){
        int v = *s - 'a';
        if(ch[u][v]){
            deep ++;
            u = ch[u][v];
            ans[con+deep] = (ans[con]*flag[u] + ans[con+deep])%MOD;
        }//因为要取MOD所以写成如此,不然也可以写成+=;
        else
            break;

    }
}

int main(){
    char str[300010];
    int cas = 1;
    while(~scanf("%s",str)){
        clearw();
        memset(ans,0,sizeof(ans));
        int len = strlen(str);
        ans[0] = 1;//这里非常重要,第一个一定是符合的
        int num;
        scanf("%d",&num);
        char strt[110];
        while(num--){
            scanf("%s",strt);
            insertw(strt);
        }
        for(int i = 1;i <= len;i++){
            findw(i-1,str+i-1);//因为是从最完整一个单词开始拆。
        }

        printf("Case %d: %d\n",cas++,ans[len]);
    }
    return  0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Remember The Word-Trie 的相关文章

  • 格式说明符%02x

    我有一个简单的程序 include
  • 静态构造函数和 BeforeFieldInit?

    如果类型没有静态构造函数 则将执行字段初始值设定项 就在使用该类型之前 或者在某个时间点突发奇想 运行时 为什么这段代码 void Main start Dump Test EchoAndReturn Hello end Dump clas
  • 使用 ADAL v3 使用 ClientID 对 Dynamics 365 进行身份验证

    我正在尝试对我们的在线 Dynamics CRM 进行身份验证以使用可用的 API 我能找到的唯一关于执行此操作的官方文档是 https learn microsoft com en us dynamics365 customer enga
  • 捕获 .aspx 和 .ascx 页面中的异常

    问题说明了一切 请看以下示例代码 ul li li ul
  • 如何使用 openSSL 函数验证 PEM 证书的密钥长度

    如何验证以这种方式生成的 PEM 证书的密钥长度 openssl genrsa des3 out server key 1024 openssl req new key server key out server csr cp server
  • 无法继承形状

    为什么我不能使用继承 a 的类Shapes class http msdn microsoft com en us library ms604615 28v vs 90 29 我需要延长Rectangle具有一些方法的类 但我想以与使用相同
  • 防止控制台应用程序中的内存工作集最小化?

    我想防止控制台应用程序中的内存工作集最小化 在Windows应用程序中 我可以这样做覆盖 SC MINIMIZE 消息 http support microsoft com kb 293215 en us fr 1 但是 如何在控制台应用程
  • Unity手游触摸动作不扎实

    我的代码中有一种 错误 我只是找不到它发生的原因以及如何修复它 我是统一的初学者 甚至是统一的手机游戏的初学者 我使用触摸让玩家从一侧移动到另一侧 但问题是我希望玩家在手指从一侧滑动到另一侧时能够平滑移动 但我的代码还会将玩家移动到您点击的
  • LinkLabel 无下划线 - Compact Framework

    我正在使用 Microsoft Compact Framework 开发 Windows CE 应用程序 我必须使用 LinkLabel 它必须是白色且没有下划线 因此 在设计器中 我将字体颜色修改为白色 并在字体对话框中取消选中 下划线
  • C# 获取数据表中所有重复行的计数

    我通过运行存储过程来填充数据集 并且从数据集中填充数据表 DataSet RawDataSet DataAccessHelper RunProcedure storedprocedureName this will just return
  • 对于 C# Express 用户来说,有哪些好的工具可以识别可能重复的代码? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 也可以看看 有什么工具可以检查重复的 VB NET 代码吗 https stackoverflow c
  • 如何在多线程应用程序中安全地填充数据并 Refresh() DataGridView?

    我的应用程序有一个 DataGridView 对象和一个 MousePos 类型的列表 MousePos 是一个自定义类 它保存鼠标 X Y 坐标 类型为 Point 和该位置的运行计数 我有一个线程 System Timers Timer
  • MySQL 连接器 C++ 64 位在 Visual Studio 2012 中从源代码构建

    我正在尝试建立mySQL 连接器 C 从源头在视觉工作室2012为了64 bit建筑学 我知道这取决于一些boost头文件和C 连接器 跑步CMake生成一个项目文件 但该项目文件无法编译 因为有一大堆非常令人困惑的错误 这些错误可能与包含
  • ASP.NET Core 中间件与过滤器

    在阅读了 ASP NET Core 中间件之后 我对何时应该使用过滤器以及何时应该使用中间件感到困惑 因为它们似乎实现了相同的目标 什么时候应该使用中间件而不是过滤器 9频道有一个关于此的视频 ASP NET 怪物 91 中间件与过滤器 h
  • 当Model和ViewModel一模一样的时候怎么办?

    我想知道什么是最佳实践 我被告知要始终创建 ViewModel 并且永远不要使用核心模型类将数据传递到视图 这就说得通了 让我把事情分开 但什么是Model 和ViewModel一模一样 我应该重新创建另一个类还是只是使用它 我觉得我应该重
  • 读取依赖步行者输出

    I am having some problems using one of the Dlls in my application and I ran dependency walker on it i am not sure how to
  • 调用 .ToArray() 时出现 ArgumentException

    我有一个经常被清除的列表 代码完全是这样的 VisitorAgent toPersist List
  • 如何获取带有某个属性注释的所有属性?

    我刚刚从 Roslyn 开始 我想找到所有用属性名称 OneToOne 注释的属性 我启动了 SyntaxVisualizer 并能够获取对该节点的引用 但我想知道是否有更简单的方法来实现此目的 这就是我所拥有的 var prop docu
  • 从后面的代码添加外部 css 文件

    我有一个 CSS 文件 例如 SomeStyle css 我是否可以将此样式表文档从其代码隐藏应用到 aspx 页面 您可以将文字控件添加到标头控件中 Page Header Controls Add new System Web UI L
  • 声明一个负长度的数组

    当创建负长度数组时 C 中会发生什么 例如 int n 35 int testArray n for int i 0 i lt 10 i testArray i i 1 这段代码将编译 并且启用 Wall 时不会出现警告 并且似乎您可以分配

随机推荐

  • Python配置免费的OCR图片识别文字(附代码)

    今天刷帖刷到一个网站 可以免费OCR识别 但是具体的次数我没有计算 文档上也没有具体说明 那么我们一起来看看吧 首先网址在这里 点我直达 1 我们需要注册一个账号 获取非常重要的参数 ColaKey 2 接着我们看一下文档说明 可跳过 点我
  • 用Python实现队列(queue)

    一 队列的定义 队列 一种先进先出 FIFO First in First Out 的线性结构 即在队列的尾部入队 在队列的头部出队 入队 即队列添加成员 在队列的尾部完成 出队 即队列删除成员 在队列的头部完成 在创建队列时 一般以数组为
  • 登陆界面的测试

    一 功能 1 用户名和密码 用户名和密码的合法性 长度 字符 空 用户名和密码的一致性 验证码的合法性和一致性 2 登陆功能 跳转正确 3 页面其他链接 如忘记密码 4 记住用户名 记住密码的功能 5 输入框是否支持复制和粘贴 6 密码显示
  • 图像分割:Python的SLIC超像素分割

    图像分割 Python的SLIC超像素分割 1 什么是超像素 2 为什么超像素在计算机视觉方面有重要的作用 3 简单线性迭代聚类 SLIC 4 效果图 5 源码 参考 1 什么是超像素 在单个或多个通道中 图像表示为像素网格 我们采用这些M
  • mysql8 java Could not create connection to database server. Attempted reconnect 3 times问题

    最近照着网上的一个博主的例子 学习ssm 结果一个mysql8 搞得我都崩溃了 各种连不上 总结一下出错原因 1 maven中的jdbc连接jar包 版本也要换成高版本
  • Linux基本权限(详解)

    目录 文件权限位 更改文件权限 chmod指令 chown指令 chgrp指令 数字权限 umask命令 文件权限位 显示当前目录下文件的详细信息 ls l 也可以写成 ll Linux下文件的权限位共有十个 按照1333来划分 第一位代表
  • 服务器操作系统比较,服务器操作系统比较

    服务器操作系统比较 内容精选 换一换 Atlas 800 训练服务器 型号 9000 安装上架 服务器基础参数配置 安装操作系统等操作请参见 Atlas 800 训练服务器 用户指南 型号9000 风冷 或 Atlas 800 训练服务器
  • 特征筛选3——卡方检验筛选特征(单变量筛选)

    sklearn文档 https scikit learn org stable modules generated sklearn feature selection chi2 html 卡方检验只适用分类任务 用来检验特征与y是否相互独立
  • java获取response与request

    java获取response与request 方式一 监听 web xml
  • Makefile 多个目标匹配的问题

    在windows下直接使用mingw32 make ZTHREAD A the static link library file of ZThread ZTHREAD A F ZJ tools cpp libs ZThread 2 3 2
  • Flutter 文字渐变色

    目前在做的项目需要用到渐变文字的需求 但是都用图的话 会导致包很大 所以打算自己去写一个渐变 本次渐变用到的组件是ShaderMask这个组件来完成咱们的文字渐变色 代码实现 text里面的文字需要设置为白色字体 ShaderMask sh
  • [ 云计算 华为云 ] 解决办法:如何更换华为云云耀云服务器L实例的镜像

    文章目录 问题描述 分析原因 解决办法 文末送书 ANSYS Workbench项目分析与案例实操详解 博主推荐理由 本书内容简介 本书作者简介 废话在前 直接看解决办法的这段可以过 讲道理 一般情况下云服务器 镜像是随便更换的 但是我发现
  • 华为OD机试 - 查找众数及中位数(Java)

    题目描述 众数是指一组数据中出现次数量多的那个数 众数可以是多个 中位数是指把一组数据从小到大排列 最中间的那个数 如果这组数据的个数是奇数 那最中间那个就是中位数 如果这组数据的个数为偶数 那就把中间的两个数之和除以2 所得的结果就是中位
  • count(*)和group by的用法

    https www cnblogs com gongchengshiwhl p 7994761 html https blog csdn net weixin 44938368 article details 109614917 1 cou
  • 将设计稿图标制作成iconfont(ps cs6 + ai cs6)

    项目开发中需要用到icon iconfont网站上找的icon风格各式各样 就想着把设计稿的图标直接转成icon就好了 1 先在ps装一个脚本 save ps to svg1 0 jsx 放在ps安装目录下的 Presets Scripts
  • python Opencv和pyautogui实现自动识图点击

    python Opencv和pyautogui实现自动识图点击 1 导入python及其他模块 匹配类是上一章博客内容 pyautogui自带的图片匹配效果不是很理想 就使用Opencv的图片匹配来实现图片的定位 python 使用模版匹配
  • Vue.js 学习笔记十三:Vue Router 之导航守卫

    目录 导航守卫 全局前置守卫 全局后置钩子 路由独享的守卫 组件内的守卫 导航守卫 我们来考虑一个需求 在一个 SPA 应用中 如何改变网页的标题呢 网页标题是通过
  • linux安装php7的方法

    1 安装依赖包 1 安装依赖包 1 yum install y gcc gcc c make zlib zlib devel pcre pcre devel libjpeg libjpeg devel libpng libpng devel
  • linux中的USB摄像头驱动(应用层)(基于V4L2)

    V4L2 是 Video4Linux2 的缩写 是 Linux 内核中的一个视频设备驱动接口 USB V4L2 初始化流程 1 打开设备节点 open 2 配置参数 分辨率 fps 格式 ioctl 3 请求分配帧缓存 gt 地址映射 4
  • Remember The Word-Trie

    题目 UVaLive 3942 include