hdu5635 BestCoder Round #74 (div.2) LCP Array
来源:互联网 发布:重庆时时彩开奖软件 编辑:程序博客网 时间:2024/05/01 00:17
LCP Array
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 895 Accepted Submission(s): 252
Problem Description
Peter has a string s=s1s2...sn , 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 modulo109+7 .
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
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 integern (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 ofn in all test cases doesn't exceed 106 .
The first line contains an integer
The sum of values of
Output
For each test case output one integer denoting the answer. The answer must be printed modulo 109+7 .
Sample Input
330 043 2 131 2
Sample Output
16250260
首先每一个元素都限制在a[i] <= n - i, 若有超出限制的直接跳出输出0
发现规律a[i] != 0时a[i + 1] = a[i] - 1,若符合执行下一步,否则跳出,然后输出0
发现规律,有x个0,最后结果就是26 * 25^x
注意取模运算
#include <cstdio>#include <iostream>using namespace std;int a[100005];long long mod = 1000000007;long long p(long long x) {long long res = 1;for (int i = 1; i <= x; i++) {res = (res * 25) % mod;}return res;}int main(){int T, n;scanf("%d", &T);while (T--) {scanf("%d", &n);bool flag = true;int cou = 0;for (int i = 1; i <= n - 1; i++) {scanf("%d", &a[i]);if (!a[i]) cou++;if (a[i] > n - i) flag = false;}if (!flag) {puts("0");continue;}for (int i = 1; i <= n - 2; i++) {if (a[i] != 0 && a[i + 1] != a[i] - 1) {flag = false;break;}}if (flag) {printf("%I64d\n", (26 * p(cou)) % mod);}else {puts("0");}}return 0;}
0 0
- hdu5635 BestCoder Round #74 (div.2) LCP Array
- HDU5635 LCP Array BestCoder
- BestCoder Round #74 (div.2) LCP Array
- hdu5635 BestCoder Round #74 (div.2)
- BestCoder Round #74 (div.2) ~' T1. LCP Array ' 题解
- 【HDU5635 BestCoder Round 74 (div2)A】【贪心 暴力】LCP Array 相邻后缀最大相同前缀 输出字符串方案数
- BestCoder Round #74 (div.2) -LCP Array(有毒的模拟)
- BestCoder Round #74 (div.2) A.LCP Array & B.Shortest Path
- BestCoder Round #64 (div.2) 1003Array
- BestCoder Round #74 (div.2)
- BestCoder Round #64 (div.2) 1003 Array HDU 5587
- BestCoder Round #64 (div.2) HDOJ5587 Array(dfs)
- BestCoder Round #64 (div.1) B.Array
- hdu 5637 BestCoder Round #74 (div.2)
- BestCoder Round #74 (div.2)【1排列组合】
- BestCoder Round #11 (Div. 2)
- BestCoder Round #11 (Div. 2)
- BestCoder Round #50 (div.2)
- 64位CentOS系统安装arm-linux-gcc 4.4.3
- 【历届试题】大臣的旅费
- jQuery,javascript获得网页的高度和宽度
- nyoj--35 表达式求值(stack)
- 秒懂java回调方法
- hdu5635 BestCoder Round #74 (div.2) LCP Array
- 二叉树转变为双向链表
- SQL优化,处理百万级以上的数据处理
- cocos 项目 接入友盟 android 推送sdk
- 我是如何给实验室的服务器上网的
- android IPC通信小结
- Linux内核分析之时间片轮转调度
- FZU ACM 题目分类(转自某位大神的博客)
- 用Category给类中添加属性