HDU 5635 LCP Array(水~)
来源:互联网 发布:网络错误代码002 编辑:程序博客网 时间:2024/05/19 13:44
Description
一个由小写字母组成的长度为n的字符串,定义ai为该字符串第i个字符开始的后缀与第i+1个字符开始的后缀的最长公共前缀长度,现在给出a序列,问有多少种字符串与其对应(1<=i < n)
Input
第一行一整数T表示用例组数,每组用例首先输入字符串长度n,之后n-1个整数表示a序列(2<=n<=1e5,0<=ai < n)
Output
对于每组用例,输出合法字符串数量,结果模1e9+7
Sample Input
3
3
0 0
4
3 2 1
3
1 2
Sample Output
16250
26
0
Solution
显然a序列应该是一个连续下降的自然数序列直至变成0,之后全是0,以此来判是否有解,如果有解那么第一个字符有26种取值,对于其他字符,如果某字符与前一个字符不相同那么就有25种可能(相同只有1种可能,因为前一个字符已经固定,那么该字符也固定)
Code
#include<cstdio>#include<iostream>using namespace std;typedef long long ll;#define maxn 111111#define mod 1000000007llint T,n,a[maxn];ll ans;int main(){ scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i=1;i<n;i++)scanf("%d",&a[i]); ans=26; int flag=1; for(int i=1;i<n;i++) { if(!a[i])flag=0; if(!flag)flag=1,ans=ans*25%mod; if(a[i-1]!=0&&a[i]!=a[i-1]-1||a[i]>n-i) { ans=0; break; } } printf("%I64d\n",ans); } return 0;}
0 0
- HDU 5635 LCP Array(水~)
- hdu 5635 LCP Array
- HDU 5635 LCP array
- HDU 5635:LCP Array
- HDU 5635 LCP Array
- 【HDU 5635 LCP Array】
- hdu 5635 LCP Array【思维】
- hdu 5635 LCP Array(BC第一题)
- 【hdu 5635】LCP Array 中文题意&题解&代码(C++)
- hdu 5635 LCP Array(BC第一题)
- HDU problem 5635 LCP Array【思维】
- hdoj LCP Array 5635 (找规律)
- ♥HDOJ 5635-LCP Array
- hdoj 5635 LCP Array 【模拟】
- hdoj 5635 LCP Array (模拟)
- LCP Array
- HDU5635 LCP Array BestCoder
- HDU 5365 LCP Array (数学 逻辑 对我来说非常困难)
- 分布式一致性原理学习笔记(1)
- 架构专题
- PM狗到底是TMD啥玩意 又DO那些事情
- MapReduce工作原理学习
- 关于pwm波
- HDU 5635 LCP Array(水~)
- 欢迎使用CSDN-markdown编辑器
- 继承MonoBehavior的脚本从唤醒到销毁的生命周期
- 左右最值最大差
- ios 键盘 之 数字键盘
- 设计模式--原型模式Prototype(创建型)
- 已知中序+后序 写树
- 使用sklearn做单机特征工程
- 欢迎使用CSDN-markdown编辑器