hdu 5635 LCP Array(BC第一题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5635
LCP Array
let suffi=sisi+1...sn be
the suffix start with i-th
character of s.
Peter knows the lcp (longest common prefix) of each two adjacent suffixes which denotes as ai=lcp(suffi,suffi+1)(1≤i<n).
Given the lcp array, Peter wants to know how many strings containing lowercase English letters only will satisfy the lcp array. The answer may be too large, just print it modulo 109+7.
the number of test cases. For each test case:
The first line contains an integer n (2≤n≤105) --
the length of the string. The second line contains n−1 integers: a1,a2,...,an−1 (0≤ai≤n).
The sum of values of n in
all test cases doesn't exceed 106.
3
3
0 0
4
3 2 1
3
1 2
16250
26
0
题目大意:先输入一个t代表着測试组数。再输入一个n表示字符串的长度。s1,s2,s2,s2.......接下去输入n-1个数,表示的最长同样前缀的长度。
即:以第二组測试数据为例
ai=lcp(suffi,suffi+1);
解题思路:经过分析找到:a[i-1]=a[i]+1。假设一直满足这个条件的话,直接输出26,不满足直接输出0。
须要注意的是:最后一个数a[n-1]一定要大于1。否则直接输出0。
另一个就是第一数a[1]等于0的话,直接乘26。之后遇到0就乘25。
详见代码。
#include <iostream>
#include <cstdio>
#include <cstring> using namespace std; __int64 a[100010],s;
const int Mod=(1e9+7); int main()
{
int t;
scanf("%d",&t);
while (t--)
{
int n;
scanf("%d",&n);
for (int i=1; i<=n-1; i++)
{
scanf ("%I64d",&a[i]);
}
int flag=0;
s=1;
int k=0;
for (int i=1; i<n; i++)
{
if (i==1)
{
if (a[i]==0)
{
s=(s*26)%Mod;
k=1;
}
continue;
}
if (a[i-1]>0&&a[i-1]!=a[i]+1)
flag=1;
else
{
if (a[i]==0)
{
if (k==1)
s=(s*25)%Mod;
else
{
s=(s*26)%Mod;
k=1;
}
}
}
}
if (k==1)
s=(s*25)%Mod;
else
s=(s*26)%Mod;
if (flag==1||a[n-1]>1)
printf ("0\n");
else
printf ("%I64d\n",s);
}
return 0;
}
ai=lcp(suffi,suffi+1)
hdu 5635 LCP Array(BC第一题)的更多相关文章
- HDU 5635 ——LCP Array ——————【想法题】
LCP Array Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total ...
- hdu 5178 pairs(BC第一题,,方法不止一种,,我用lower_bound那种。。。)
题意: X坐标上有n个数.JOHN想知道有多少对数满足:x[a]-x[b]<=k(题意给)[a<b] 思路: 额,,,直接看代码吧,,,, 代码: int T,n,k; int x[100 ...
- HDU 1312 Red and Black 第一题搜索!
Red and Black Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- 《学习OpenCV》练习题第五章第一题ab
这道题是载入一幅带有有趣纹理的图像并用不同的模板(窗口,核)大小做高斯模糊(高斯平滑),然后比较用5*5大小的窗口平滑图像两次和用11*11大小的窗口平滑图像一次是否接近相同. 先说下我的做法,a部分 ...
- BZOJ 3172([Tjoi2013]单词-后缀数组第一题+RMQ)
3172: [Tjoi2013]单词 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 268 Solved: 145 [ Submit][ St ...
- 2018年多校第三场第一题 A. Ascending Rating hdu6319
比赛地址:http://acm.hdu.edu.cn/contests/contest_show.php?cid=804 题目编号:第一题 A. Ascending Rating hdu6319 题 ...
- [py]letcode第一题求和
letcode第一题, tm的不好弄. 想了很久想到了一个粗蠢的解决办法. Given an array of integers, return indices of the two numbers ...
- leetcode第一题(easy)
第一题:题目内容 Given an array of integers, return indices of the two numbers such that they add up to a sp ...
- 纪中10日T1 2300. 【noip普及组第一题】模板题
2300. [noip普及组第一题]模板题 (File IO): input:template.in output:template.out 时间限制: 1000 ms 空间限制: 262144 K ...
随机推荐
- Vue js 的生命周期详解
Vue 实例的生命周期 Vue 实例有一个完整的生命周期,也就是从开始创建.初始化数据.编译模板.挂载Dom→渲染.更新→渲染.卸载等一系列 过程,我们称这是 Vue 的生命周期.通俗说就是 Vue ...
- Linux学习(十九)软件安装与卸载(二)更换yum源
一.简介 系统自带的源数量有限,而且是国外的源,速度肯定不如国内的.而断网的时候,本地源就可以派得上用处.而RPMForge源是传说中规模最大的一个源.那么接下来我们就来分别配一下本地源,国内源,RP ...
- Maven元素解析——pom.xml
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6628201.html 一个pom.xml中包含了许多标签,各个标签是对项目生命周期.依赖管理的配置.常用的主 ...
- C#模拟登录总结
/// <summary> 登录 /// </summary> /// <param name="url">< ...
- tmux frequently asked questions
tmux frequently asked questions How is tmux different from GNU screen? tmux and GNU screen have ...
- List实现
1.元素添加 #include <stdio.h> #include <stdlib.h> struct ListNode{ struct ListNode* next; in ...
- TensorFlow学习笔记(一):数据操作指南
扩充 TensorFlow tf.tile 对数据进行扩充操作 import tensorflow as tf temp = tf.tile([1,2,3],[2]) temp2 = tf.tile( ...
- iOS开发 关于addChildViewController的理解
iOS开发 关于addChildViewController的理解 前言 我之前是做Android开发的接触ios开发不到一个月的时间,所以在有些东理解上会不自觉的向Android方向靠拢. 理解 通 ...
- Less 编译工具
Less 编译工具 虽然你可以选择在浏览器端使用Less,直接在页面中嵌入一个 Less.js 文件,你也可以选择在服务器端使用Less,使用命令行将Less文件编译成最终的CSS文件. 然而,这两种 ...
- Flex布局学习笔记
任何元素都可以使用Flex布局,包括行内元素 display: flex; display: inline-flex使用Flex布局之后,子元素的float, clear, vertical-alig ...