BestCoder Round #75 1003 - King's Order
国王演讲后士气大增,但此时战争还没有结束,国王时不时要下发命令。 由于国王的口吃并没有治愈,所以传令中可能出现:“让第三军-军-军,到前线去” 这样的命令。由于大洋国在军队中安插了间谍 , 战事紧急,很多时候前线的指挥官不能分清哪些命令真正来自国王。但国王的命令有一个特点,他每次连续重复的字符最多 333 次. 所以说他的命令中没有:“让第三军-军-军-军 , 到前线去”,但是可以有 :“让第三军-军 , 到前线去” 。 此时将军找到了你,你需要告诉他,给定命令的长度长度为 n,有多少种不同的命令可以是国王发出的 。(也就是求长度为 n 的合格字符串的个数)当然,国王可能说出一句话没有犯任何口吃,就像他那次演讲一样。 为了简化答案,国王的命令中只含有小写英文字母,且对答案输出模 1000000007。 我们认为两个命令如果完全相同那么这两个字符串逐个比较就完全相同。
第一行一个整数表示测试组数:T(T≤10)T(T \le10)T(T≤10)。 每组数据占一行,每行一个正整数 n(n≤2000) 表示字符串的长度。
共 T 行,每行一个整数表示合法的命令数量。
2
2
4
676
456950
两个中没有不符合要求的,所以答案为 26×26=67626\times 26 = 67626×26=676 四个不符合要求的只有 `aaaa` `bbbb` ... `zzzz`总共 26 个 那么答案就是: 264−26=45695026^4-26 = 456950264−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的更多相关文章
- BestCoder Round #75 1001 - King's Cake
Problem Description It is the king's birthday before the military parade . The ministers prepared a ...
- BestCoder Round #75 1002 - King's Phone
问题描述 阅兵式上,国王见到了很多新奇东西,包括一台安卓手机.他很快对手机的图形解锁产生了兴趣. 解锁界面是一个 3×33 \times 33×3 的正方形点阵,第一行的三个点标号 1,2,31, 2 ...
- hdu 5643 BestCoder Round #75
King's Game Accepts: 249 Submissions: 671 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 6 ...
- hdu 5641 BestCoder Round #75
King's Phone Accepts: 310 Submissions: 2980 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- BestCoder Round #75
前两题不想写了 数位DP 1003 King's Order 考虑i的后缀有j个连续,转移状态很简单,滚动数组优化(其实不用) #include <bits/stdc++.h> const ...
- 从lca到树链剖分 bestcoder round#45 1003
bestcoder round#45 1003 题,给定两个点,要我们求这两个点的树上路径所经过的点的权值是否出现过奇数次.如果是一般人,那么就是用lca求树上路径,然后判断是否出现过奇数次(用异或) ...
- ACM学习历程—BestCoder Round #75
1001:King's Cake(数论) http://acm.hdu.edu.cn/showproblem.php?pid=5640 这题有点辗转相除的意思.基本没有什么坑点. 代码: #inclu ...
- BestCoder Round #75 King's Order dp:数位dp
King's Order Accepts: 381 Submissions: 1361 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 655 ...
- BestCoder Round #75 解题报告
King's Cake [思路] 递推 公式:f(n,m)=f(max(m,n-m),min(m,n-m))+1,n>m [代码] #include<cstdio> #include ...
随机推荐
- MVC学习 (二) Razor语法
MVC的Model层我理解与三层架构的Molde没有区别,都是作为各个层之间的数据沟通桥梁.但是关于Control和View都有一些与传统webform不同的特性. 这里先学习View里所用到的Raz ...
- js/css 检测移动设备方向的变化 判断横竖屏幕
js/css 检测移动设备方向的变化 判断横竖屏幕 方法一:用触发手机的横屏和竖屏之间的切换的事件 window.addEventListener("orientationchange&qu ...
- php zendstudio 常用的一些自定义模板标签
<?php /** * xxx.php * ============================================== * Copy right 2013-2016 http: ...
- php单例设计模式
class car { static $obj = null; private function __construct(){} static function getObj(){ if(is_nul ...
- 设定MS SQL Server 2008定期自动备份
1.说明 SQL Server2008 本身具有定期自动备份功能,我们只需要通过简单的配置就可以实现非常简单高效的自动备份功能. 2.打开SQL Server代理服务 要实现自动备份功能,首先要保证S ...
- volatile 和const 变量的使用
一.volatile定义: 一个定义为volatile的变量是说这变量可能会被意想不到的被改变,这样,有了volatile变量后,就提醒编译器就不会去假设这个变量的值了.精确地说就是,编译中的优化器在 ...
- .Net框架中,.ashx页面访问session
public class ClassName : System.Web.SessionState.IRequiresSessionState 需实现session接口
- Laravel Packages 开发
Packages是向Laravel中添加功能最重要的途径.composer.json中require的都是包.关于包的详细说明请查看 API . 下面一起创建一个简单的Package : 1. 环境配 ...
- hdu 4906 3-idiots fft
题目链接 n个火柴棍取3个, 问能组成三角形的概率是多少. kuangbin大神的博客写的很详细了..http://www.cnblogs.com/kuangbin/archive/2013/07/2 ...
- MFC socket网络通讯核心代码
服务器: AfxSocketInit();//初始化,必须执行这个函数socket才能正常执行 server.Create(10086); server.Listen(10); while(1) { ...