日天的终生大事
题目描述

日天学长向妹子表白了,妹子说:“日天你那么聪明,回答我一个问题就答应你。你告诉我,L位K进制数有多少个?”日天表示这个问题太简单了,要求提高难度。妹子想了想说:“那么我增加一个要求,一个满足要求的L位K进制数,任意两位相邻的数字相减的绝对值不能等于一,你能告诉我,有多少个满足条件的L位K进制数么?”,因为这个结果可能非常大,为了不难为日天,结果要对1000000007取余。日天一时半会儿没想出来,学长的终身大事需要同学们的帮助哇!

Hint:对于输入4 2,以下数字满足条件11、13、20、22、30、31、33。故输出7。

输入

多组输入直至文件结尾
每组输入占一行,包含两个正整数k,l。
(1<=l<=1000)
(1<k<=1000)

输出

每组数据输出一个整数,表示答案对1000000007取余的值。

样例输入
4 2
样例输出
7DP
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>
#include <stack>
#include <cstdlib>
#include <iomanip>
#include <cmath>
#include <cassert>
#include <ctime>
#include <map>
#include <set>
using namespace std;
#define lowbit(x) (x&(-x))
#define max(x,y) (x>y?x:y)
#define min(x,y) (x<=y?x:y)
#define MAX 100000000000000000
#define MOD 1000000007
#define pi acos(-1.0)
#define ei exp(1)
#define PI 3.141592653589793238462
#define ios() ios::sync_with_stdio(true)
#define INF 1044266558
#define mem(a) (memset(a,0,sizeof(a)))
typedef long long ll;
ll dp[1003][1003],pos,cnt,k,n;
int main()
{while(scanf("%lld%lld",&k,&n)!=EOF){memset(dp,0,sizeof(dp));if(n==1) {printf("%lld\n",k);continue;}for(int i=0;i<k;i++){if(i==0 || i==k-1) dp[n-1][i]=(k-1)%MOD;else dp[n-1][i]=(k-2)%MOD;}pos=(k*(k-2)+2)%MOD;for(int i=n-2;i>0;i--){cnt=pos;pos=0;for(int j=0;j<k;j++){if(j==0) dp[i][j]=(cnt+MOD-dp[i+1][j+1])%MOD;else if(j==k-1) dp[i][j]=(cnt+MOD-dp[i+1][j-1])%MOD;else dp[i][j]=(cnt+MOD-dp[i+1][j-1]+MOD-dp[i+1][j+1])%MOD;pos=(pos+dp[i][j])%MOD;}}printf("%lld\n",(pos+MOD-dp[1][0])%MOD);}return 0;
}

 

转载于:https://www.cnblogs.com/shinianhuanniyijuhaojiubujian/p/7487705.html

日天的终生大事(dp)相关推荐

  1. NC17134 Symmetric Matrix(dp+数学)

    链接:https://ac.nowcoder.com/acm/problem/17134 solution 首先看一下 n×nn \times nn×n 的方阵需要满足的条件: 矩阵中的任意元素 ai ...

  2. ORACLE 错误一览表

    ORA-00001: 违反唯一约束条件 (.) ITPUB个人空间)@f+^ bQ,H ORA-00017: 请求会话以设置跟踪事件 #f;i$EC6Cnp/H,z0ORA-00018: 超出最大会话 ...

  3. 算法训练Day50 | LeetCode123. 买卖股票的最佳时机III(最多买卖2次);LeetCode188. 买卖股票的最佳时机IV(最多买卖K次)

    目录 LeetCode123. 买卖股票的最佳时机III 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考与收获 LeetCode188. 买卖股票的最佳时机IV 1. 思路 2. 代码实现 ...

  4. 义务教育数学课程标准2022

    刘畅多次强调,课程教材要发挥培根铸魂.启智增慧的 作用,必须坚持马克思主义的指导地位,体现马克思主义中国化最新 成果,体现中国和中华民族风格,体现党和国家对教育的基本要求, 体现国家和民族基本价值观, ...

  5. SSL2811 2017年10月30日提高组T2 摘Galo(树形dp)

    2017年10月30日提高组T2 摘Galo Description 0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO. 这棵Galo树可以看做是一棵以1号点为根的n个点的有 ...

  6. 7月29日dp训练总结

    7 7 7 月 29 29 29 日 d p dp dp 训练总结 时间安排 考试时间:8点到10点20 8 : 00 ∼ 8 : 20 8:00\sim8:20 8:00∼8:20 : 把题目通读一 ...

  7. 【每日DP】day1 P1802 5倍经验日(别样的01背包)难度⭐★

    题目链接 输入 6 8 21 52 1 21 70 5 21 48 2 14 38 3 14 36 1 14 36 2 输出 1060 一道有点意思的01背包,可以帮助理解.好久没写DP了,每天一道D ...

  8. 2017年10月23日提高组T2 灵知的太阳信仰 单调队列优化dp

    Description 在炽热的核熔炉中,居住着一位少女,名为灵乌路空. 据说,从来没有人敢踏入过那个熔炉,因为人们畏缩于空所持有的力量--核能. 核焰,可融真金. 咳咳. 每次核融的时候,空都会选取 ...

  9. dp训练 4月5日 第四天结 动态规划入门完成

    这四天一共做了12道有关dp的题,其中十道训练计划中的题,两道是团队训练时遇到的dp题. 十道训练题全部来自于syl的小学期dp课程,包括 两道新手背包题(01背包,01背包满包) 一道区间dp题(括 ...

最新文章

  1. 使用Apache Commons Configuration读取配置信息
  2. matlab 区间预测,用神经网络进行预测的MATLAB算法实现?
  3. 【Android 安全】DEX 加密 ( Java 工具开发 | apk 文件对齐 )
  4. sas宏中如何跳出%do循环
  5. 想了解推荐系统最新研究进展?请收好这16篇论文
  6. 通过MicroProfile上下文传播增强了CDI上下文和隔板
  7. LeetCode 496. 下一个更大元素 I(哈希)
  8. Python编写caffe代码
  9. 2017年高频率的互联网校园招聘面试题
  10. androidid什么时候会变_高瓷绿松石是什么意思?为何绿松石的瓷度要比颜色重要?...
  11. oracle基于脚本的安装失败,脚本建库导致 Oracle 组件未安装故障案例
  12. gif表情包在线生成器怎么一键生成图片
  13. BP神经网络预测实例(matlab代码,神经网络工具箱)
  14. python求两坐标距离_如何使用Python已知两坐标求距离?
  15. 第33期、基于java的网上订餐管理系统
  16. 安全运维基础知识梳理
  17. mysql数据库闪退
  18. 物联网安全专题 | 浅谈物联网设备安全分析方法 — 硬件篇
  19. html自定义菜单按钮图片,editormd,markdown 自定义导航栏按钮
  20. Python微信自动回复脚本

热门文章

  1. java注解约束参数为固定值_Java学习 使用注解将参数的值限定
  2. 【Unity ASE学习笔记】
  3. 斜面怎么计算机械效率,斜面的机械效率
  4. 一项调查:从浅到深的机器学习方法的血压估计使用生物传感器【翻译】
  5. cutting stock 问题的列生成算法
  6. Redisson分布式锁的配置和使用
  7. C语言入门系列 -运算符
  8. 图片拼图微信小程序源码_支持多模板制作和流量主
  9. string转map报错
  10. MySQL数据库——锁机制