分析:对于第一个点,答案为26^n - 25^n,这个很好想.另外30%的点因为n <= 5,所以可以直接暴力搜索.

数学方法不是很好处理,考虑dp,设f[i][j]为前i位匹配到危险串第j位的方案数,枚举第i+1位上的字母k,f[i][j]可以转移到f[i+1][危险串中下一个k出现的位置],危险串中中下一个k出现的位置必须要满足前面都能匹配上,后面没有就是前一次出现k的位置,这么说来比较抽象,可以理解为KMP中的失配函数:如果j+1位是k,直接转移到j+1就好了,因为1~j都是匹配好的,1~nextt[i]也是匹配好的,所以能转移到nextt[i]上去.nextt即为失配函数.最后统计一下f[n][0~len - 1]就可以了.

两个字符串匹配的问题dp状态的前2维一般可以表示为第一个字符串匹配到第i位,第二个字符串匹配到第j位.剩下的要根据题目的要求来,i肯定是要顺序枚举的,接下来就是讨论第i位和第j位能否匹配得上,能要怎么转移,不能要怎么转移.有时候还要讨论第i位是否要去和第j位进行匹配,具体题目具体分析,知道了一般的套路,遇到这种题总不至于下不了手.

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; const int mod = 1e9 + ; long long n, len, nextt[], jump[][], f[][];
long long ans;
char s[]; int main()
{
while (scanf("%lld", &n) != EOF)
{
ans = ;
memset(f, , sizeof(f));
scanf("%s", s + );
len = strlen(s + );
long long j = ;
for (long long i = ; i <= len; i++)
{
while (s[j + ] != s[i] && j)
j = nextt[j];
if (s[j + ] == s[i])
j++;
nextt[i] = j;
}
for (long long i = ; i <= len; i++)
for (long long j = 'a'; j <= 'z'; j++)
{
long long k = i;
while (s[k + ] != j && k)
k = nextt[k];
if (s[k + ] == j)
k++;
jump[i][j] = k;
}
f[][] = ;
for (long long i = ; i < n; i++)
for (long long j = ; j < len; j++)
for (long long k = 'a'; k <= 'z'; k++)
{
f[i + ][jump[j][k]] += f[i][j];
f[i + ][jump[j][k]] %= mod;
}
for (long long i = ; i < len; i++)
{
ans += f[n][i];
ans %= mod;
}
printf("%lld\n", ans);
} return ;
}

noip模拟赛 helloworld的更多相关文章

  1. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  2. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  3. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  4. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  5. 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...

  6. 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...

  7. 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...

  8. CH Round #58 - OrzCC杯noip模拟赛day2

    A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...

  9. CH Round #52 - Thinking Bear #1 (NOIP模拟赛)

    A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...

随机推荐

  1. 如何编写 Python 程序

    如何编写 Python 程序 从今以后,保存和运行 Python 程序的标准步骤如下: 对于 PyCharm 用户 打开 PyCharm. 以给定的文件名创建新文件. 输入案例中给出的代码. 右键并运 ...

  2. python基本数据类型——元组

    元组 元组是一种不可变的序列,创建后不可以修改元素值 # 创建只包含一个元素的元组 >>a = (3,) >>print(a) (3,) #使用 tuple() 转换为元组 & ...

  3. springMVC怎么改变form的提交方式为put或者delete

    想着练习一下创建restful风格的网站呢,结果发现在jsp页面上并不能灵活使用put和delete提交方式.下面我的解决办法 一. form 只支持post和get两种提交方式,只支持get提交方式 ...

  4. opencv-学习笔记(2)

    opencv-学习笔记(2) 这章记录了 获取像素点,改变像素点 获取图像的属性(行,列,通道数,数据类型) roi感应区 拆分以及合并图像通道 边缘扩充 opencv获取像素点,改变像素点 ---- ...

  5. SpringCloud IDEA 教学 (三) Eureka Client

    写在前头 本篇继续介绍基于Eureka的SpringCloud微服务搭建,回顾一下搭建过程, 第一步:建立一个服务注册中心: 第二步:建立微服务并注入到注册中心: 第三步:建立client端来访问微服 ...

  6. 适合初学者的嵌入式Linux计划

    俗话说万事开头难,刚开始的时候,你是否根本就不知如何开始,上网查资料被一堆堆新名词搞的找不到北,去图书馆看书也是找不到方向?又是arm,又是linux,又是uboot头都大了,不知道自己究竟从哪里开始 ...

  7. Thunder团队第五周 - Scrum会议5

    Scrum会议5 小组名称:Thunder 项目名称:i阅app Scrum Master:翟宇豪 工作照片: 杨梓瑞同学在拍照,所以不在照片内. 参会成员: 王航:http://www.cnblog ...

  8. Thunder团队第一周 - Scrum会议6

    Scrum会议6 小组名称:Thunder 项目名称:爱阅app Scrum Master:苗威 工作照片: 参会成员: 王航:http://www.cnblogs.com/wangh013/ 李传康 ...

  9. c# 调取 c++ dll____c#调用dll

    1.以海康摄像头dll为例.(文章转载https://www.cnblogs.com/smartsensor/p/4343744.html) 海康SDK编程指南 目前使用的海康SDK包括IPC_SDK ...

  10. Java微笔记(2)

    Java 中方法的重载 一,如果同一个类中包含了两个或两个以上方法名相同.方法参数的个数.顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了 二,.判断方法重载的依据: 1. 必须是在同一个 ...