BestCoder Round #75 T3 King's Order HDOJ 5642
来源:互联网 发布:程序员能自学吗 编辑:程序博客网 时间:2024/05/01 15:17
/*
这道题看起来似乎可以用公式的样子,但实际上在不断地尝试过之后发现并不可以。。。
所以我们考虑动态规划,方程dp[i]表示考虑到第i位时合法解的数量,利用第i-1位的情况动态地刷新出第i位的情况。
但是。。。。
该怎么转移呢?╭(╯^╰)╮。。。
下面我们来考虑一下这个转移的特点:如果对命令没有要求,那么答案就是26的n次方,那么就这样:dp[i]=dp[i-1]*26-非法情况。所以我们来考虑对于非法情况该如何转移;
由于国王的命令最多也只能有三个字母相连,所以在所有的情况中,如果前三个字符已经相同,那当前这一位就受到了限制,那这个限制究竟是多少呢?
关键在于在所有的情况中有多少情况会在末尾出现三连呢?那么关键来了!
让我们回到4位之前(i-4),假设这时候i-4位有x种合法情况,那么到当前这一位中的那决定性的三位以a为三连结尾的就有x种,同理,b,c,d……都有x种那么就减去dp[i-4]*26喽!
可是这是错的!因为第i-5位还有一个字母呢,要是乘以26的话那不就出现4连了么?所以真实的情况是乘以25~~~;
*/
#include<iostream>#include<algorithm>#include<queue>#include<cstdio>#include<cstring>using namespace std;//全程long long,全程long long ,全程long long!!!typedef long long ll;ll T,n,mod=1e9+7,dp[2010];int main(){ cin>>T; dp[1]=26; dp[2]=26*26; dp[3]=26*26*26; dp[4]=456950; /* 这里要注意,我们的方法对于n=4可是不行的,所以直接把4算出来,很明显不能4连,4的答案就是26*26*26*26-26(这里把dp[0]初始化成1是不行滴,应该减26); */ for(int i=5;i<=2000;i++) { dp[i]=((26ll*dp[i-1]-dp[i-4]*25ll)%mod+mod)%mod;//这里有个重要的细节,为什么我们要%一次又加一个mod再%一次呢?如果只%一次不加的话,就有可能会减出负数!(事实证明的确如此) }//为了节省时间,我们直接把1-2000全算出来,询问时直接查询就好啦; while(T--) { scanf("%d",&n); printf("%I64d\n",dp[n]%mod); }}
0 0
- BestCoder Round #75 T3 King's Order HDOJ 5642
- BestCoder Round #75 King's Order dp:数位dp
- BestCoder Round #75 1003 - King's Order & 1004 - King's Game
- BestCoder Round #75 King's Game
- BestCoder Round #75 King's Game
- hdoj 5642 King's Order 【数位dp】
- BestCoder Round #75 King's Cake 模拟&&优化 || gcd
- BestCoder Round #75-King's Cake(模拟)
- HDU 5643 bestcoder Round #75 king's game [威瑟夫问题]
- BestCoder Round #74 (div.2) T3 Transform HDOJ 5637
- HDU 5642 King's Order
- HDU 5642 King's Order
- HDU-5642 King's Order
- King's Order hdu 5642
- HDU 5642 King's Order【数位dp】
- HDU 5642 King's Order(dp)
- hdu 5642 King's Order 递推
- HDU 5642:King's Order【DP】
- OJ831 统计good及相关题
- 1. 动态指定编译(运行)路径
- 制作splash-安卓开发(1)
- intellij 新建javaweb项目并用tomcat 7启动
- 为阿里云ECS服务器二级域名绑定tomcat子目录,实现一个IP多个二级域名
- BestCoder Round #75 T3 King's Order HDOJ 5642
- 重学数据结构系列之——队列
- java方法调用都是值传递的理解
- 帮助文档打开后右边显示为空
- iOS基础之沙盒机制-路径获取
- 深刻理解Python中的元类(metaclass)
- 自然数幂和模板
- 数组和逗号表达式
- 字符指针的初始化以及程序分析实例