描述

传送门:hdu-5635

Peter has a string $s=s_1s_2…s_n$, let $suff_i=s_is_{i+1}…s_n$ 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 $a_i=lcp(suff_i,suff_{i+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 $10^9+7$.

Input

There are multiple test cases. The first line of input contains an integer T indicating the number of test cases. For each test case:

The first line contains an integer n ($2≤n≤10^5$) — the length of the string. The second line contains n−1 integers: $a_1,a_2,…,a_{n−1} (0≤a_i≤n)$.

The sum of values of n in all test cases doesn’t exceed $10^6$.

Output

For each test case output one integer denoting the answer. The answer must be printed modulo $10^9+7$.

Examples

  • intput

    1234567
    330 043 2 131 2
  • output

    123
    16250260

思路

  • 有解的条件:以样例2为例:$lcp_1=3 \Rightarrow s_1=s_2,s_2=s_3,s_3=s_4$,要有解显然$lcp_i=lcp_{i-1}-1$一定成立,而且$lcp_{n-1}$不可能大于1,也就是说如果$lcp_i$=n,那么$lcp_i$到$lcp_{i+n}$的值一定是n到1递减。
  • 计算有解时的答案:显然当$lcp_i$=n(n>0)时,$s_i$到$s_{i+n}$都为同一个字母,如果$lcp_i$=0,则$s_i$和$s_{i+1}$为不同字母,所以当前一种字母确定时,后一种字母就有25种可能。
  • 所以如果有解,lcp数组中0的个数为n,答案就是$26 \times 25^n$。我也是在草稿本上先找到规律AC了才推出原理的

代码

12345678910111213141516171819202122232425262728293031323334353637383940
#include<iostream>#include<algorithm>#include<string.h>#include<string>#include<stdio.h>#include<stdlib.h>#include<math.h>using namespace std;#define CRL(a) memset(a,0,sizeof(a))#define MAX 0xfffffff#define M 100000typedef unsigned long long LL;typedef  long long ll;const int mod =1e9+7;

int main(){    int n,len,lcp[M],Flag=0;    ll ans;    cin>>n;    while(n--)    {        Flag=0;        ans=26;        cin>>len;        for(int i=1; i<len; i++)        {            scanf("%d",&lcp[i]);            if(lcp[i]+1!=lcp[i-1]&&lcp[i-1]>0)  //如果不是前比后多一且前一个不为0                Flag=1;            else if(lcp[i]==0)                ans=(ans*25)%mod;        }        if(Flag||lcp[len-1]>1)  //lcp数组末尾一定是0或1            cout<<0<<endl;        else            cout<<ans<<endl;    }    return 0;}

LCP Array(排列组合)相关推荐

  1. LCP 22. 黑白方格画(排列组合)

    黑白方格画 题目:小扣注意到秋日市集上有一个创作黑白方格画的摊位.摊主给每个顾客提供一个固定在墙上的白色画板,画板不能转动.画板上有 n * n 的网格.绘画规则为,小扣可以选择任意多行以及任意多列的 ...

  2. php 1到9加,php通过排列组合实现1到9数字相加都等于20的方法

    摘要:本文实例讲述了php通过排列组合实现1到9数字相加都等于20的方法.分享给大家供大家参考.具体实现方法如下:<?php set_time_limit(0); /* 函数说明:huoqu_z ...

  3. js 排列 组合 的一个简单例子

    最近工作项目需要用到js排列组合,于是就写了一个简单的demo. 前几天在网上找到一个写全排列A(n,n)的code感觉还可以,于是贴出来了, 排列的实现方式: 全排列主要用到的是递归和数组的插入 比 ...

  4. 【组合数学】排列组合 ( 多重集排列 | 多重集全排列 | 多重集非全排列 所有元素重复度大于排列数 | 多重集非全排列 某些元素重复度小于排列数 )

    文章目录 一.多重集 二.多重集全排列 三.多重集全排列示例 三.多重集非全排列 1 所有元素重复度大于排列数 ( ni≥rn_i \geq rni​≥r ) 四.多重集非全排列 2 某些元素重复度小 ...

  5. java dfs_Java数据结构与算法 深搜(DFS)的简单使用(一)之排列组合

    今天,我们来简单介绍一下深度优先搜索(DFS)的概念和使用. 在百度词条中,对深搜的解释是这样的. 百度词条中的解释 由此,我们可知,深搜是广泛运用到 图 中的搜索方法之一. 用深度优先搜索遍历图的基 ...

  6. php输出1到10的和,php通过排列组合实现1到9数字相加都等于20的方法

    本文实例讲述了php通过排列组合实现1到9数字相加都等于20的方法.分享给大家供大家参考.具体实现方法如下: set_time_limit(0); /* 函数说明:huoqu_zhuhe($eq,$j ...

  7. php排列组合1004无标题,PHP的排列组合有关问题

    PHP的排列组合有关问题PHP的排列组合问题 现有数组$arr = array('Area','Income','Age','Gender'); 想根据以上数组里的元素,组成新的数组如下: AreaG ...

  8. [leetcode] 题型整理之排列组合

    一般用dfs来做 最简单的一种: 17. Letter Combinations of a Phone Number Given a digit string, return all possible ...

  9. java排列组合二维数组_JavaScript 二维数组排列组合2

    二维数组排列组合 var arrays = [ [ '1-1-雨尘', '1-2-芸芸', '1-3-简一', '1-4-乐乐' ] , [ '2-5-小明', '2-6-花花', '2-7-数数' ...

最新文章

  1. linux的tar中ztvf,linux中的tar命令(2)
  2. 【ZZ】详解哈希表的查找
  3. (三)HTTP再邂逅--熟悉HTTP协议结构和通讯原理
  4. java迪杰斯特拉算法_迪杰斯特拉算法完整代码(Java)
  5. mysql数字连接,MySQL - 已达到数字连接
  6. Android 中的线程池
  7. 2018厦门大学计算机技术分数线,厦大录取分数线2018 各省最新录取情况
  8. 数值计算方法matlab课后答案,《现代的数值计算方法matlab版》习题解答.pdf
  9. UDS 协议软件架构
  10. python房价数据分析波士顿_Python编程数据科学入门 - 波士顿房价数据分析
  11. 使用js替换数组中元素
  12. 阿辉DirectX 11学习笔记二
  13. 图解域名解析DNS过程
  14. python实验报告代写_Python 读写CSV作业代写代做、代写Python I/O文件读写程序作业、代写代做python 实验报告...
  15. lisp实心圆点怎么画_cad中怎么样画实心圆点
  16. 还是gif动画的处理
  17. 安卓玩机搞机技巧综合资源---MIUI14全机型首版下载链接 刷机方法 获取root步骤【十二】
  18. macOS Big Sur 11.7 (20G817) Boot ISO 原版可引导镜像
  19. 在Windows Server 2022系统上安装 Brother MFC-7450打印机驱动
  20. 集五福招数都在这了,2021 支付宝集五福全攻略

热门文章

  1. 巅峰对决!Amazon DeepRacer中国联赛总决赛来了!
  2. 跳槽,面试官问“你为什么离职”时实际上是在问什么?
  3. 农村单一姓氏村庄的成因分析
  4. java date加月_关于java:在日期中添加月份
  5. 互联网周刊封面报道:到公司去
  6. 中彩体彩22选5彩票软件 v6.20 下载
  7. 【吐槽贴】项目经理如何进行高效沟通?
  8. 解决bootstrap轮播图因为图片尺寸造成的问题
  9. 三相电路线电压(电流)与相电压(电流)的关系
  10. ac3/eac/eac+atmos编码同步帧参数概述