hrbust 2181
来源:互联网 发布:朝鲜核爆东北 知乎 编辑:程序博客网 时间:2024/05/22 12:51
数位dp
动态规划 的一种用法
dp[i][j]
i代表第几位j代表的这个位置元素的名称
我们需要遍历除在p,q内不同的元素加起来到i位
无聊的小明Time Limit: 3000 MSMemory Limit: 32768 KTotal Submit: 63(34 users)Total Accepted: 37(32 users)Rating: Special Judge: NoDescription小明想用两个字母a和b创造一个长度为n的单词,但是他又不希望连续的a超过p个,同时也不希望连续的b超过q个。那么小明有能创造出多少个不用的单词呢?
Input每组数据包括一行,三个整数n,p,q分别对应题意。
其中max(a, b) <= n <= 50000,1 <= a, b <= 300。
Output输出不同的单词的个数。个数要对1000000007取模。
Sample Input3 2 1
Sample Output4
Source2014.11.29新生赛-热身赛SubmitStatisticDiscussSharedcodes#include<string.h>
#define mod 1000000007
long long dp[50003][2];
int main()
{
int n,p,q;
while(~scanf("%d%d%d",&n,&p,&q))
{
memset(dp,0,sizeof(dp));
dp[0][1]=1;
dp[0][0]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i&&j<=p;j++)
{
dp[i][1]+=dp[i-j][0];
dp[i][1]%=mod;
}
for(int j=1;j<=i&&j<=q;j++)
{
dp[i][0]+=dp[i-j][1];
dp[i][0]%=mod;
}
}
printf("%lld\n",(dp[n][1]+dp[n][0])%mod);
}
}
0 0
- hrbust 2181
- HRBUST
- HRBUST
- HRBUST
- HRBUST
- HRBUST
- HRBUST
- HRBUST
- Hrbust
- HRBUST
- HRBUST
- HRBUST
- HRBUST
- HRBUST
- HRBUST
- Hrbust 1073
- HRBUST 2250
- hrbust 1429
- 被说了很多遍的设计模式---组合模式
- Spring中的计时器StopWatch
- Javase易错之方法重写 子类方法返回值应比父类返回值更小或相等
- 有用的工具
- 策略模式
- hrbust 2181
- 让 sudo 会话时间随心所欲
- linux 用ld链接nasm编译的elf格式的.o文件报错
- Android多线程下载
- uname命令获取Linux系统详情
- Java对象的序列化和反序列化
- 流式大数据处理的三种框架:Storm,Spark和Samza
- Spring事务管理总结
- leetcode481: Magical String