题目描述

有一种特殊的集合叫做PFS(Prefix Free Set)集合。

一个PFS集合由若干字符串构成,且不存在一个字符串是另一个字符串的前缀。空集也被看作是PFS集合。

例如 {\("hello"\)} 和 {\("hello", "goodbye", "giant", "hi"\)} 是PFS集合,但 {\("hello","hell"\)} 和{\("great","gig","g"\)} 不是。

现在给你一个集合,请你求出它的子集是PFS集合的子集个数,答案对\(9191\)取模。

输入

输入数据第一行一个整数\(n\),表示集合里元素的个数。

以下n行,每行一个非空字符串\(s\),仅包含小写英文字母,表示集合中的元素。数据保证不存在两个相同的字符串。

输出

输出一个正整数\(ans\),表示对\(9191\)取模后的答案。

输入样例

3
hello
hi
hell

输出样例

6

提示

输入输出样例解释

除了 {\("hell","hello"\)} 和 {\("hi","hello","hell"\)} 两种情况外,其余情况均是PFS集合。

数据规模

对于\(30%\)的数据,\(n≤20\);

对于\(100%\)的数据,\(1≤n≤50000\),字符串长度不大于\(50\)。

思路

\(f[i]+=f[ch[i][1]]\times f[ch[i][2]]\times \cdots\times f[ch[i][26]]\)

代码

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; const int N = 2500000 + 128; int to[N][26];
int p; int cnt[N]; int f[N]; void dfs(int u)
{
int ans = 1;
for (int i = 0; i < 26; i++)
if (to[u][i])
{
dfs(to[u][i]);
ans = ans * f[to[u][i]] % 9191;
}
f[u] = ans;
if (cnt[u])
f[u]++;
} static char str[50016]; int main()
{
int n;
scanf(" %d", &n);
getchar(); ++p;
for (int i = 1; i <= n; i++)
{
scanf(" %s", str + 1);
int len = strlen(str + 1);
int now = 1;
for (int i = 1; i <= len; i++)
{
if (to[now][str[i] - 'a'] == 0)
to[now][str[i] - 'a'] = ++p;
now = to[now][str[i] - 'a'];
}
cnt[now] = 1;
}
dfs(1); printf("%d", f[1] % 9191);
return 0;
}

[一本通1700]PFS集合的更多相关文章

  1. [SQL] SQL 基础知识梳理(七)- 集合运算

    SQL 基础知识梳理(七)- 集合运算 目录 表的加减法 联结(以列为单位) 一.表的加减法 1.集合:记录的集合(表.视图和查询的执行结果). 2.UNION(并集):表的加法 -- DDL:创建表 ...

  2. HEOI2018(九省联考) 题解集合

    转载请注明出处:http://www.cnblogs.com/LadyLex/p/8792894.html 今年的省选题目真是赞啊……Day2的题完全不会做…… 不过终于卡着校线爬着进了B队 终于改完 ...

  3. 生成二维码 加密解密类 TABLE转换成实体、TABLE转换成实体集合(可转换成对象和值类型) COOKIE帮助类 数据类型转换 截取字符串 根据IP获取地点 生成随机字符 UNIX时间转换为DATETIME\DATETIME转换为UNIXTIME 是否包含中文 生成秘钥方式之一 计算某一年 某一周 的起始时间和结束时间

    生成二维码 /// <summary>/// 生成二维码/// </summary>public static class QRcodeUtils{private static ...

  4. 7 SQL 集合运算

    7 集合运算 7-1 表的加减法 本章将会和大家一起学习“集合运算”操作.在数学领域,“集合”表示“(各种各样的)事物的总和”:在数据库领域,表示“记录的集合”.具体来说,表.视图和查询的执行结果都是 ...

  5. C# Tuple 创建一个新二元集合

    List<string> list1=new List<string>(); List<string> list2=new List<string>() ...

  6. 集合运算(UNION)

    表的加法 集合运算:就是满足统一规则的记录进行的加减等四则运算. 通过集合运算可以得到两张表中记录的集合或者公共记录的集合,又或者其中某张表中记录的集合. 集合运算符:用来进行集合的运算符. UNIO ...

  7. 深浅拷贝、集合set、函数、日志

    #-----深浅拷贝---- import copy a = ["xiaoming",111,[5000,2000]] b = a print("b:%s" % ...

  8. Java集合--TreeMap

    转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3310928 第1部分 TreeMap介绍 TreeM ...

  9. [一本通学习笔记] 最近公共祖先LCA

    本节内容过于暴力没什么好说的.借着这个专题改掉写倍增的陋习,虽然写链剖代码长了点不过常数小还是很香. 10130. 「一本通 4.4 例 1」点的距离 #include <bits/stdc++ ...

  10. [一本通学习笔记] AC自动机

    AC自动机可以看作是在Trie树上建立了fail指针,在这里可以看作fail链.如果u的fail链指向v,那么v的对应串一定是u对应串在所给定字符串集合的后缀集合中的最长的后缀. 我们考虑一下如何实现 ...

随机推荐

  1. 【LeetCode栈与队列#06】前K个高频元素(TopK问题),以及pair、priority_queue的使用

    前 K 个高频元素 力扣题目链接(opens new window) 给定一个非空的整数数组,返回其中出现频率前 k 高的元素. 示例 1: 输入: nums = [1,1,1,2,2,3], k = ...

  2. CoaXPress 2.0 FPGA 4 Channel Host and Device FMC Card User Manual

    Hello-FPGA CoaXPress 2.0 FMC Card User Manual 4 1 CoaXPress 简介 4 2 CoaXPress 4R FMC 5 2.1 硬件特性 5 2.2 ...

  3. 【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数

    问题描述 在Azure App Service for Windows的环境中,部署.NET应用,其中使用了 SAP NetWeaver RFC函数 (需要加载 sapnwrfc.dll).详细的错误 ...

  4. 【Azure 应用服务】使用命令行创建 webapp 应用出现命令语法不正确错误

    问题描述 根据Azure App Service 入门文档 "快速入门:在 Linux 上的 Azure 应用服务中创建 Python 应用" 在创建App Service应用时候 ...

  5. sentinel的见解

    Sentinel 是面向分布式.多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量控制.熔断降级.热点流量防护等多个维度来帮助开发者保障微服务的稳定性.   在 Sentinel 里面,所 ...

  6. SQLmap 爆破

    1.Sqlmap  -u "http://114.67.246.176:11055/index.php?" --data="id=1"   (这里  --dat ...

  7. ThreadLocal父子间通信的四种解决方案

    ThreadLocal父子间通信的四种解决方案 ThreadLocal 是存储在线程栈帧中的一块数据存储区域,其可以做到线程与线程之间的读写隔离. 但是在我们的日常场景中,经常会出现父线程需要向子线程 ...

  8. 基于BES2500芯片的方案开发总结和反思

    前记   虽然蓝牙芯片现在非常多,可是一旦想做一些差异化的产品时候,能用的非常少.在和客户的反复斟酌中,最终选择了BES2500来开发这款新的产品.这里面是基于自身的实力,产品定位和芯片诉求多重考量的 ...

  9. 如何在forEach内使用异步调用 async/await

    翻自: How to use async and await in a forEach JS loop? https://learn.coderslang.com/0144-how-to-use-as ...

  10. 3DCAT+东风日产:共建线上个性化订车实时云渲染方案

    近年来,随着5G网络和云计算技术的不断发展,交互式3D实时云看车正在成为一种新的看车方式. 与传统的到4S店实地考察不同,消费者可以足不出户,通过网络与终端设备即可实现全方位展示.自选汽车配色.模拟效 ...