51nod1196 字符串的数量
用N个不同的字符(编号1 - N),组成一个字符串,有如下要求:
(1) 对于编号为i的字符,如果2 * i > n,则该字符可以作为结尾字符。如果不作为结尾字符而是中间的字符,则该字符后面可以接任意字符。
(2) 对于编号为i的字符,如果2 * i <= n,则该字符不可以作为结尾字符。作为中间字符,那么后面接的字符编号一定要 >= 2 * i。
问有多少长度为M且符合条件的字符串,由于数据很大,只需要输出该数Mod 10^9 + 7的结果。
例如:N = 2,M = 3。则abb, bab, bbb是符合条件的字符串,剩下的均为不符合条件的字符串。
Input
输入2个数,N, M中间用空格分割,N为不同字符的数量,M为字符串的长度。(2 <= N, M <= 10^6)
Output
输出符合条件的字符串的数量。由于数据很大,只需要输出该数Mod 10^9 + 7的结果。
Input示例
6 3
Output示例
73
记得这道题在长沙的时候曾经rand到过(就是无聊的时候在51nod上rand题做)。
然后清楚记得当时做不起,开题解大概懂了并没有打。
由于N比较大,基本上搞不成什么东西,所以只能在字符串的要求上下手。
我们发现有一个比较让人着迷的地方就是对于一个编号为i的字符如果2*i<=n,那么后面接的字符编号一定要>=2*i
也就是说,当2*i<=n的时候i会成迅速增长,一直到2*i>n。
那么我们可以发现两个2*i>n的i中间夹的2*i<=n的数量不超过20个。
所以可以考虑提前预处理出中间夹x个的方案数,然后直接用矩阵快速幂搞。
51nod1196 字符串的数量的更多相关文章
- [51nod1197]字符串的数量 V2
		用N个不同的字符(编号1 - N),组成一个字符串,有如下要求: (1) 对于编号为i的字符,如果2 * i > n,则该字符可以作为结尾字符.如果不作为结尾字符而是中间的字符,则该字符后面可以 ... 
- @51nod - 1196/1197/1198@ 字符串的数量
		目录 @description@ @solution@ @part - 1@ @part - 2@ @part - 3@ @accepted code@ @details@ @description@ ... 
- 用map来统计数组中各个字符串的数量
		1.背景 想要统计这一个字符串数组中每一个非重复字符串的数量,使用map来保存其key和value.这个需求在实际开发中经常使用到,我以前总是新建一个空数组来记录不重复字符串,并使用计数器计数,效率低 ... 
- 51Nod 1196 字符串的数量
		用N个不同的字符(编号1 - N),组成一个字符串,有如下要求: (1) 对于编号为i的字符,如果2 * i > n,则该字符可以作为结尾字符.如果不作为结尾字符而是中间的字符,则该字符后面可以 ... 
- 51nod 1196 字符串的数量(DP+数论?)
		这题好像是神题...V1 V2 V3分别涵盖了51nod 5级算法题 6级算法题 难题 讨论区的曹鹏神牛好强啊...一种做法切了V1 V2 V3,而且做法是一步一步优化的 还没去看优化的部分,未优化已 ... 
- 51nod【1196】字符串的数量
		超级神题! 有n种字符,若此种字符的编号( \(1\) ~ \(n\)),\(i*2>n\),则他后面可接任意字符.若不是,则他后面接的字符编号至少要是他的两倍. 问长度为m的字符串的个数. 这 ... 
- 51nod 1197 字符串的数量 V2(矩阵快速幂+数论?)
		接上一篇,那个递推式显然可以用矩阵快速幂优化...自己随便YY了下就出来了,学了一下怎么用LaTeX画公式,LaTeX真是个好东西!嘿嘿嘿 如上图.(刚画错了一发...已更新 然后就可以过V2了 or ... 
- Js字符串按数量分组
		代码: function group(ss,step) { var r = []; function doGroup(s) { if (!s) return; r.push(s.substr(0, s ... 
- Core Java 总结(字符和字符串类问题)
		所有代码均在本地编译运行测试,环境为 Windows7 32位机器 + eclipse Mars.2 Release (4.5.2) 2016-10-17 整理 字符,字符串类问题 正则表达式问题 J ... 
随机推荐
- C/C++编译的程序内存组成:
			#include int main(){int a[1000000];//局部变量return 0;}编译运行后发现溢出错误.#include int a[1000000];//全局变量int mai ... 
- 7.Spring切入点的表达式和通知类型
			1.切入点的表达式 表达式格式: execution([修饰符] 返回值类型 包名.类名.方法名(参数)) 其他的代替: <!-- 完全指定一个方法 --> <!-- <aop ... 
- [JZOJ5969] 世界线修理(欧拉回路)
			题目 描述 > 题目大意 给你两棵树,让你对每个点赋权,使得在两棵树中的任意子树的和绝对值为111. 比赛思路 其实我一开始理解错题意了-- 正解 首先,我们可以判断每个点权的奇偶性. 如果一个 ... 
- poj 2288
			传送门 解题思路 状压dp,记录路径条数,dp[S][i][j]表示状态为S,前一个点是i,再前一个点是j的最大值,然后在开个一样的数组记录方案数,时间复杂度O(2^n*n^2),注意要用long l ... 
- 路由的配置,侧边栏类名与url的结合运用
			var url_array = document.location.pathname.split("/"); s1 = url_array[1]; s2 = url_array[2 ... 
- ssh小知识
			1.查看系统在线用户 [root@testdb ~]# w 14:30:26 up 38 days, 21:22, 3 users, load average: 0.00, 0.01, 0.05USE ... 
- 编码格式简介(ANSI、GBK、GB2312、UTF-8、UTF-16、GB18030和 UNICODE)
			很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物,他们把这称为”字节”.再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态 ... 
- Java内功修炼系列一责任链模式
			在上一节的拦截器中提到,程序的设计者一般会用拦截器替替代动态代理,将动态代理的逻辑隐藏起来,而把拦截器接口提供给开发者,使开发者不需要关系动态代理的具体实现过程,但是有时候需要多个拦截器,而且拦截器之 ... 
- TZOJ 4021 Ugly Problem(线段树区间子段最大)
			描述 给定一个序列A[0],A[1],…A[N-1],要求找到p0,p1,p2,p3使得A[p0]+A[p0+1]+…+A[p1] + A[p2]+A[p2+1]+…+A[p3]最大(0<=p0 ... 
- [转]web计时机制——performance对象
			页面性能一直都是Web开发人员比较关注的领域.但在实际应用中,度量页面性能的指标,是javascript的Date对象.Web Timing API改变了这个局面,让开发人员通过javascript就 ... 
