codeforce 474D Flowers
来源:互联网 发布:佳博网络打印机设置 编辑:程序博客网 时间:2024/06/01 08:04
原题地址
题意
Marmot在吃饭的时候会吃红色或者白色的两种花,所以他的晚饭可以视为一个红白花的序列,要求是白花每次出现都是以K朵一组的形式出现
输入 T(数据组数) K(每组白花个数)
问题是当Marmot吃a-b朵花时可能的序列数,答案mod(1e9+7)
note
k=2
如果序列长为1,只能是R
长为2,可以是RR,WW
长为3,可以是RWW,RRR,WWR
and so on
题解
因为白花每次K个一组出现,设dp[i]为长度为i的方案数,则有dp[i]=dp[i-1]+dp[i-k],然后前缀和就好了
初始化要注意,dp[0]=1;sum[0]=1;
dp[1]不一定为1,有可能是2(k==1时)
#include<bits/stdc++.h>using namespace std;const int h=1e9+7;const int maxn=1e5;int dp[maxn+5];int sum[maxn+5];int main(void){#ifdef exfreopen("in.txt","r",stdin);#endifint t,k;int a,b;scanf("%d%d",&t,&k);dp[0]=1;sum[0]=1;for (int i=1;i<=maxn;++i){if (i>=k ) dp[i]=(dp[i-1]+dp[i-k])%h;else dp[i]=dp[i-1]%h;sum[i]=(sum[i-1]+dp[i])%h;}for (int i=1;i<=t;++i){scanf("%d%d",&a,&b);printf("%d\n",(sum[b]-sum[a-1]+h)%h);}}
0 0
- codeforce 474D Flowers
- Codeforces 474 D. Flowers
- Codeforces 474D Flowers
- codeforces-474D-Flowers
- Codeforces 474 D Flowers
- Codeforces 474D Flowers
- codeforces 474D Flowers dp
- Codeforces 474d Flowers | dp
- CF 474D Flowers(dp)
- CodeForces 474D Flowers (dp)
- CF 474D Flowers DP
- CodeForces 474D Flowers (dp)
- Codeforces 474D Flowers【dp】
- D. Flowers
- Codeforces 474D Flowers dp(水
- CF - 474 - D. Flowers(dp)
- Codeforces 474D Flowers 动态规划法
- Codeforces 474 D Flowers(DP)
- 114. Flatten Binary Tree to Linked List
- Java集合框架之Set--HashSet源码分析
- 利用贝塞尔曲线实现小球曲线运动
- MySQL 使用方法简单教程
- map hashmap整理
- codeforce 474D Flowers
- Android socket 实现 wify 通信,简易聊天室 (一)
- hdu1205 吃糖果(鸽巢原理)
- HDU5656 所有子集GCD和
- 笔试题14. LeetCode OJ (1)
- POJ 1265 Area pick定理 + 多边形面积求法
- CAS单点登录自定义登录页面错误提示
- 初识JS作用域
- 如何快速看懂一个Android项目