题目链接

这题,真心木啥意思,就是数据里貌似字符有负数,注意gets读入。。

 #include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#include <algorithm>
#include <cstdlib>
using namespace std;
int trie[][];
int dp[][][];
int o[];
int que[];
int fail[];
int id[];
int t,N;
void CL()
{
t = ;
memset(trie,-,sizeof(trie));
memset(dp,,sizeof(dp));
memset(o,,sizeof(o));
memset(id,,sizeof(id));
}
void insert(char *str)
{
int len,i,root;
len = strlen(str);
root = ;
for(i = ;i < len;i ++)
{
if(trie[root][id[str[i]+]] == -)
trie[root][id[str[i]+]] = t ++;
root = trie[root][id[str[i]+]];
}
o[root] = ;
}
void build_ac()
{
int front,tail,head,i;
head = tail = ;
for(i = ;i < N;i ++)
{
if(trie[][i] != -)
{
fail[trie[][i]] = ;
que[tail++] = trie[][i];
}
else
{
trie[][i] = ;
}
}
while(head != tail)
{
front = que[head++];
if(o[fail[front]])
o[front] = ;
for(i = ;i < N;i ++)
{
if(trie[front][i] != -)
{
que[tail++] = trie[front][i];
fail[trie[front][i]] = trie[fail[front]][i];
}
else
{
trie[front][i] = trie[fail[front]][i];
}
}
}
}
int main()
{
int M,P,i,j,k,u;
int ans[];
char ch[];
while(scanf("%d%d%d%*c",&N,&M,&P)!=EOF)
{
CL();
gets(ch);
for(i = ;i < N;i ++)
{
id[ch[i]+] = i;
}
for(i = ;i < P;i ++)
{
gets(ch);
insert(ch);
}
build_ac();
dp[][][] = ;
for(i = ;i < M;i ++)
{
for(j = ;j < t;j ++)
{
if(o[j]) continue;
for(k = ;k < N;k ++)
{
if(o[trie[j][k]]) continue;
for(u = ;u < ;u ++)
{
dp[i+][trie[j][k]][u] += dp[i][j][u];
}
for(u = ;u < ;u ++)
{
if(dp[i+][trie[j][k]][u] > )
{
dp[i+][trie[j][k]][u+] += dp[i+][trie[j][k]][u]/;
dp[i+][trie[j][k]][u] = dp[i+][trie[j][k]][u]%;
}
}
}
}
}
memset(ans,,sizeof(ans));
for(i = ;i < t;i ++)
{
for(u = ;u < ;u ++)
{
ans[u] += dp[M][i][u];
}
for(u = ;u < ;u ++)
{
if(ans[u] > )
{
ans[u+] += ans[u]/;
ans[u] = ans[u]%;
}
}
}
int flag = ;
for(i = ;i >= ;i --)
{
if(ans[i] > )
flag = ;
if(flag)
printf("%d",ans[i]);
}
if(flag == )
printf("0\n");
else
printf("\n");
}
return ;
}

POJ 1625 Censored!(大数+DP)的更多相关文章

  1. POJ 1625 Censored!(AC自动机->指针版+DP+大数)题解

    题目:给你n个字母,p个模式串,要你写一个长度为m的串,要求这个串不能包含模式串,问你这样的串最多能写几个 思路:dp+AC自动机应该能看出来,万万没想到这题还要加大数...orz 状态转移方程dp[ ...

  2. POJ 1625 Censored!(AC自动机 + DP + 大数 + 拓展ASCII处理)题解

    题意:给出n个字符,p个病毒串,要你求出长度为m的不包含病毒串的主串的个数 思路:不给取模最恶劣情况$50^{50}$,所以用高精度板子.因为m比较小,可以直接用DP写. 因为给你的串的字符包含拓展A ...

  3. POJ 1625 Censored!(AC自动机+DP+高精度)

    Censored! Time Limit: 5000MS   Memory Limit: 10000K Total Submissions: 6956   Accepted: 1887 Descrip ...

  4. POJ 1625 Censored!(AC自动机+高精度+dp)

    http://poj.org/problem?id=1625 题意: 给出一些单词,求长度为m的串不包含这些单词的个数. 思路: 这道题和HDU 2243和POJ 2778是一样的,不同的是这道题不取 ...

  5. POJ 1625 Censored! (AC自己主动机 + 高精度 + DP)

    题目链接:Censored! 解析:AC自己主动机 + 高精度 + 简单DP. 字符有可能会超过128.用map映射一下就可以. 中间的数太大.得上高精度. 用矩阵高速幂会超时,简单的DP就能解决时间 ...

  6. POJ 1625 Censored ( Trie图 && DP && 高精度 )

    题意 : 给出 n 个单词组成的字符集 以及 p 个非法串,问你用字符集里面的单词构造长度为 m 的单词的方案数有多少种? 分析 :先构造出 Trie 图方便进行状态转移,这与在 POJ 2278 中 ...

  7. POJ 1625 Censored! [AC自动机 高精度]

    Censored! Time Limit: 5000MS   Memory Limit: 10000K Total Submissions: 9793   Accepted: 2686 Descrip ...

  8. POJ 1625 Censored!

    辣鸡OI毁我青春 Description The alphabet of Freeland consists of exactly N letters. Each sentence of Freela ...

  9. POJ.3624 Charm Bracelet(DP 01背包)

    POJ.3624 Charm Bracelet(DP 01背包) 题意分析 裸01背包 代码总览 #include <iostream> #include <cstdio> # ...

随机推荐

  1. 2015-2-10 Linux 知识

    1.Linux系统中某个可执行文件属于root并且有setid,当一个普通用户mike运行这个程序时,产生的进程的有效用户和实际用户分别是____? A root mike B root rooy C ...

  2. CI邮箱中SMTP的一些端口

    介绍其他几个常用邮箱设置,并以网易126邮箱为例,发图.        一.新浪邮箱(1)新浪邮箱自08年6月分服务器被攻击后开始对pop取件频率进行了严格**,同时新注册的用户需要手动才能开通pop ...

  3. springMVC 上传文件

    spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...

  4. placement new讲解

    [本文链接] http://www.cnblogs.com/hellogiser/p/placement-new.html [分析] 首先我们区分下几个容易混淆的关键词:new.operator ne ...

  5. 转centos65安装简测mysql cluster 7.3.7

    MySQLCluster是sharednothing分布式架构,ndb存储引擎把数据放置于内存中.可以做到无单点故障.由运行于不同服务器上的的多种进程构成,组件包括SQL节点,NDBD数据节点,管理程 ...

  6. 【linux】awk的使用

    教程来自:http://www.runoob.com/linux/linux-comm-awk.html 教程中的例子很好,可以有助于快速上手awk.但是里面的细节介绍的并不清楚. 问题1:什么时候写 ...

  7. CodeForces - 426A(排序)

    Sereja and Mugs Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Sub ...

  8. Power Strings(poj 2406)

    题意:求字符串中循环节出现的次数 KMP!!! #include<cstdio> #include<iostream> #include<cstring> #def ...

  9. Android与后台数据交互学习

    摘要 任何系统在没有用户登录就可操作数据是非常危险的,链接客户端与服务器的是用户登录后的session,用户登录系 统后存在一个sessionid,这个sessionid就是客户端的cookie,客户 ...

  10. java 小知识点

    1.转Java中Vector和ArrayList的区别   首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList.Vector和LinkedList.List用于存 ...