国王演讲后士气大增,但此时战争还没有结束,国王时不时要下发命令。

由于国王的口吃并没有治愈,所以传令中可能出现:“让第三军-军-军,到前线去” 这样的命令。由于大洋国在军队中安插了间谍 , 战事紧急,很多时候前线的指挥官不能分清哪些命令真正来自国王。但国王的命令有一个特点,他每次连续重复的字符最多 333 次. 所以说他的命令中没有:“让第三军-军-军-军 , 到前线去”,但是可以有 :“让第三军-军 , 到前线去” 。

此时将军找到了你,你需要告诉他,给定命令的长度长度为 n,有多少种不同的命令可以是国王发出的 。(也就是求长度为 n 的合格字符串的个数)当然,国王可能说出一句话没有犯任何口吃,就像他那次演讲一样。

为了简化答案,国王的命令中只含有小写英文字母,且对答案输出模 1000000007。

我们认为两个命令如果完全相同那么这两个字符串逐个比较就完全相同。
第一行一个整数表示测试组数:T(T≤10)T(T \le10)T(T≤10)。

每组数据占一行,每行一个正整数 n(n≤2000) 表示字符串的长度。

输出描述

共 T 行,每行一个整数表示合法的命令数量。

输入样例

2
2
4

输出样例

676
456950

Hint

两个中没有不符合要求的,所以答案为 26×26=67626\times 26 = 67626×26=676

四个不符合要求的只有 `aaaa` `bbbb` ... `zzzz`总共 26 个

那么答案就是: 264−26=45695026^4-26 = 45695026​4​​−26=456950

 #include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define LL long long
const int mod=;
int t,n;
LL dp[][][],ans;
void fuc(){
for(int i=;i<=;i++)dp[][i][]=;
for(int i=;i<=;i++){
for(int j=;j<=;j++){
for(int k=;k<=;k++) if(j!=k) {
for(int p=;p<=;p++)
dp[i][j][]=(dp[i][j][]+dp[i-][k][p])%mod;
}
dp[i][j][]=dp[i-][j][];
dp[i][j][]=dp[i-][j][];
}
}
}
int main(){
memset(dp,,sizeof(dp));
fuc();
scanf("%d",&t);
while(t--){
scanf("%d",&n);
ans=;
for(int i=;i<=;i++){
for(int j=;j<=;j++)
ans=(ans+dp[n][i][j])%mod;
}
printf("%lld\n",ans);
}
}

d[i][j][k] 表示 第i 位串,以 字母 j 结尾, 最后面连续字母有 k 个 的数量。
d[i][j][2] 显然 由 d[i-1][j][1] 即前一位串以 j 结尾只有一个连续的推得;
同理 d[i][j][3] 由 的d[i-1][j][2] 推得
最后只有一个连续的 d[i][j][1] 显然只能由 其余 不同字母结尾 的串推得 d[i-1][k][1]+d[i-1][k][2]+d[i-1][k][3] k!=j;

然后因为每个字母都是等效的,也就是不同的 j 的存放的数据相同。
那把可以中间的j 拿掉
d[i][k] k=2,k=3 依旧同理
k=1 时即为前一值乘25得,因为是前一位子串其余不同字母结尾 d[i][1]= sum of d[i-1][k]*25 1<=k<=3;
最后统计答案 即 循环 26遍即可

 #include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define LL long long
const int mod=;
int t,n;
LL dp[][],ans;
void fuc(){
dp[][]=;
for(int i=;i<=;i++){
for(int k=;k<=;k++)
for(int p=;p<=;p++)
dp[i][]=(dp[i][]+dp[i-][p])%mod;
dp[i][]=dp[i-][];
dp[i][]=dp[i-][];
}
}
int main(){
memset(dp,,sizeof(dp));
fuc();
scanf("%d",&t);
while(t--){
scanf("%d",&n);
ans=;
for(int i=;i<=;i++)
for(int j=;j<=;j++)
ans=(ans+dp[n][j])%mod;
printf("%lld\n",ans);
}
}

BestCoder Round #75 1003 - King's Order的更多相关文章

  1. BestCoder Round #75 1001 - King's Cake

    Problem Description It is the king's birthday before the military parade . The ministers prepared a ...

  2. BestCoder Round #75 1002 - King's Phone

    问题描述 阅兵式上,国王见到了很多新奇东西,包括一台安卓手机.他很快对手机的图形解锁产生了兴趣. 解锁界面是一个 3×33 \times 33×3 的正方形点阵,第一行的三个点标号 1,2,31, 2 ...

  3. hdu 5643 BestCoder Round #75

    King's Game  Accepts: 249  Submissions: 671  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 6 ...

  4. hdu 5641 BestCoder Round #75

    King's Phone  Accepts: 310  Submissions: 2980  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: ...

  5. BestCoder Round #75

    前两题不想写了 数位DP 1003 King's Order 考虑i的后缀有j个连续,转移状态很简单,滚动数组优化(其实不用) #include <bits/stdc++.h> const ...

  6. 从lca到树链剖分 bestcoder round#45 1003

    bestcoder round#45 1003 题,给定两个点,要我们求这两个点的树上路径所经过的点的权值是否出现过奇数次.如果是一般人,那么就是用lca求树上路径,然后判断是否出现过奇数次(用异或) ...

  7. ACM学习历程—BestCoder Round #75

    1001:King's Cake(数论) http://acm.hdu.edu.cn/showproblem.php?pid=5640 这题有点辗转相除的意思.基本没有什么坑点. 代码: #inclu ...

  8. BestCoder Round #75 King&#39;s Order dp:数位dp

    King's Order Accepts: 381 Submissions: 1361 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 655 ...

  9. BestCoder Round #75 解题报告

    King's Cake [思路] 递推 公式:f(n,m)=f(max(m,n-m),min(m,n-m))+1,n>m [代码] #include<cstdio> #include ...

随机推荐

  1. 改变页面选择文字颜色和背景颜色----selection伪元素

    div::selection{color:#fff;background: #E83E84;text-shadow:none}  

  2. css中bug记录

    1.margin塌陷,通俗叫法. 假如一个盒子box里边嵌套了两个盒子(记为box1,box2).box1的margin-top不会如预想的一样在box顶部撑开一个边距,而是以包含box的容器上边界为 ...

  3. Crystal Report分組中的序號重新遞增

    客戶要批次列印發票,也就是報表需要按照發票號碼(INV_NO)進行分組,每個發票里還有明細的item,之前因為直接抓RecordNumber,所以該欄位只能從1開始計數,遇到新的發票發號不會重新從1開 ...

  4. [转载]MATLAB中FFT的使用方法

    http://blog.163.com/fei_lai_feng/blog/static/9289962200971751114547/ 说明:以下资源来源于<数字信号处理的MATLAB实现&g ...

  5. Core Bluetooth【官方文档翻译】【02】

    1.中心设备和外围设备以及它们在蓝牙通讯中的角色. 在所有的BLE( Bluetooth low energy,下文简称蓝牙4.0 )通讯中都涉及2个主要的角色:中心设备和外围设备.它是基于传统的客户 ...

  6. Z - 不容易系列之(3)―― LELE的RPG难题

    Description          人称“AC女之杀手”的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多“Cole”(LELE的粉丝,即"可乐"),经过多方打探,某资深C ...

  7. Direct2D WIC绘制图片

    绘制图片需要用到WIC,WIC的功能包括: 编解码图片.也可以自定义图片解码插件. 读取图片元数据. 图像处理(最高支持每通道32位). 内置支持一些流行的格式.包括:BMP v5, GIF 89a/ ...

  8. 认识JSONP

    jsonp 全称是JSON with Padding 我们大家都知道ajax是不能发起跨域请求,现在可以通过jsonp来弥补ajax的这一缺陷 通过script标签的src属性就可以实现跨域请求.如( ...

  9. js如何控制css伪元素内容(before,after)

    曾经遇到的问题,在对抗UC浏览器屏蔽需要把内容输出到css 伪元素中输出.有个疑问如何用js控制它.于是在segmentfault提问,如下是对问题的整理: 如何用js控制css伪类after 简单粗 ...

  10. Django学习(二) Django框架简单搭建

    为了快速学习Python进行Web的开发,所以我不准备从Python的基础学起,直接从Django框架入手,边学框架边学Python的基础知识. 下面就开始Django的快速开发之旅吧. 关于Djan ...