HDU 5365 LCP Array (数学 逻辑 对我来说非常困难)
2016-03-05 22:16
211 查看
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5635
代码:
分析:
经过题解的分析,思路立马就透彻了,一直以为是C(n,26),但是求的是最长相同前缀,与就是说第一个可以和第三个字母相同,即26*25^m,m是0的个数。
4
1 2 3
0
2 2 2
0
3 2 1 26
4
2 1 0 26*25^1
4
1 0 0 26*25^2
4
0 3 2 26*25^1
4
0 0 3 26*25^2
4
0 0 2 26*25^2
4
0 0 1 26*25^2
4
0 0 0 26*25^3
代码:
#include<iostream> #include<cstdio> using namespace std; const long long M=1e9+7; int num[100005]; int main() { int t; cin>>t; while(t--) { int n; cin>>n; num[n-1]=0; for(int i=0;i<n-1;i++) { scanf("%d",num+i); } long long ans=26; for(int i=0;i<n-1;i++) { if(!num[i]) { ans=(ans*25)%M; } else if(num[i]!=num[i+1]+1) { ans=0; break; } } cout<<ans<<endl; } return 0; }
分析:
经过题解的分析,思路立马就透彻了,一直以为是C(n,26),但是求的是最长相同前缀,与就是说第一个可以和第三个字母相同,即26*25^m,m是0的个数。
4
1 2 3
0
2 2 2
0
3 2 1 26
4
2 1 0 26*25^1
4
1 0 0 26*25^2
4
0 3 2 26*25^1
4
0 0 3 26*25^2
4
0 0 2 26*25^2
4
0 0 1 26*25^2
4
0 0 0 26*25^3
相关文章推荐
- Unity 官方自带的例子笔记 - Space Shooter
- bootstrap学习笔记之三(组件的使用)
- Risk(最短路)
- hdu 5233 Gunner II (容器)
- Android 短信的收发及在android模拟器之间实践
- 二叉搜索树(二叉查找树,二叉排序树)
- 在一个千万级的数据库查寻中,如何提高查询效率?
- angularjs前端框架
- Commons-logging + Log4j 入门指南
- 简易的扑克牌比点数游戏
- hdu 5635 LCP Array
- 从C++到Qt(命令行编译,讲解原理)
- 源码阅读笔记 – 2 std::vector (1)
- 前端工程师简历
- CodeForces 540B School Marks(思维)
- 一个http请求的详细过程
- 简单的SpringMVC+Mybatis整合
- 处理器(Processor,Seoul 2008,LA 4254)
- 欢迎使用CSDN-markdown编辑器
- 构建Java开发高性能网站需要关注的事儿