博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zoj 3747 dp递推
阅读量:4328 次
发布时间:2019-06-06

本文共 1029 字,大约阅读时间需要 3 分钟。

题目链接: 

题解链接:

 

代码:

#include 
#define MAX 1000000+100#define MOD 1000000007using namespace std;/*zoj 3747 dp 递推 */typedef long long ll;int n,m,k; ll dp[MAX][3];//dp[i][0]:表示第 i 个位置 放 0 (G士兵) 的方法数目,一直放满 N 个位置 ll solve(int u,int v){ //初始化 dp[0][0] = dp[0][1] = 0; dp[0][2] = 1; ll sum = 0; for (int i=1;i<=n;++i) { sum = ( dp[i-1][0] + dp[i-1][1] + dp[i-1][2] )%MOD; dp[i][2] = sum; // 对于G士兵 if ( i <= u) dp[i][0] = sum; else if ( i == u +1) dp[i][0] = sum-1; else dp[i][0] = (sum - dp[i-u-1][1] - dp[i-u-1][2] ) % MOD; //对于R士兵 if ( i <= v) dp[i][1] = sum; else if ( i == v +1) dp[i][1] = sum-1; else dp[i][1] = ( sum - dp[i-v-1][0] - dp[i-v-1][2] ) % MOD; } return ( ( dp[n][0] + dp[n][1] + dp[n][2] ) % MOD ); }int main (){ while(~scanf("%d%d%d",&n,&m,&k)) { ll ans = solve(n,k); cout << ( ( (ans - solve(m-1,k))%MOD +MOD ) % MOD) << endl; } return 0;}

 

转载于:https://www.cnblogs.com/yuluoluo/p/8833814.html

你可能感兴趣的文章
关于 Python
查看>>
贝叶斯网络
查看>>
SpringBoot整合ElasticSearch实现多版本的兼容
查看>>
ajax url参数中文乱码解决
查看>>
Thread Runnable 区别
查看>>
ORACLE JOB 设置
查看>>
微信小程序想要最短服务路径
查看>>
HDU - 4812 D Tree 点分治
查看>>
POJ 2763 Housewife Wind
查看>>
MinGW安装与配置
查看>>
【UVA11806 Cheerleaders】 题解
查看>>
TCP三次握手和四次挥手
查看>>
【SVN】win7 搭建SVN服务器
查看>>
iOS第三方做滤镜最主流的开源框架GPUImage
查看>>
面向对象三大特性
查看>>
网络架构与七层参考模式简介
查看>>
用python实现经典排序
查看>>
node-1
查看>>
Chessboard(规律)&&阿里巴巴和n个大盗(规律)
查看>>
设置Linux防火墙
查看>>