日天的终生大事(dp)
日天的终生大事
题目描述
日天学长向妹子表白了,妹子说:“日天你那么聪明,回答我一个问题就答应你。你告诉我,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
样例输出
7
DP
#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[][],pos,cnt,k,n;
int main()
{
while(scanf("%lld%lld",&k,&n)!=EOF)
{
memset(dp,,sizeof(dp));
if(n==) {printf("%lld\n",k);continue;}
for(int i=;i<k;i++)
{
if(i== || i==k-) dp[n-][i]=(k-)%MOD;
else dp[n-][i]=(k-)%MOD;
}
pos=(k*(k-)+)%MOD;
for(int i=n-;i>;i--)
{
cnt=pos;pos=;
for(int j=;j<k;j++)
{
if(j==) dp[i][j]=(cnt+MOD-dp[i+][j+])%MOD;
else if(j==k-) dp[i][j]=(cnt+MOD-dp[i+][j-])%MOD;
else dp[i][j]=(cnt+MOD-dp[i+][j-]+MOD-dp[i+][j+])%MOD;
pos=(pos+dp[i][j])%MOD;
}
}
printf("%lld\n",(pos+MOD-dp[][])%MOD);
}
return ;
}
日天的终生大事(dp)的更多相关文章
- HDU 4540 线性DP
威威猫系列故事——打地鼠 Time Limit: 300/100 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- HDU 4529 状压dp
郑厂长系列故事——N骑士问题 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)To ...
- 7月15日考试 题解(链表+状压DP+思维题)
前言:蒟蒻太弱了,全打的暴力QAQ. --------------------- T1 小Z的求和 题目大意:求$\sum\limits_{i=1}^n \sum\limits_{j=i}^n kth ...
- 3月28日考试 题解(二分答案+树形DP+数学(高精))
前言:考试挂了很多分,难受…… --------------------- T1:防御 题意简述:给一条长度为$n$的序列,第$i$个数的值为$a[i]$.现让你将序列分成$m$段,且让和最小的一段尽 ...
- 12月15日DP作业
[APIO2014]连珠线 考虑一组以 \(x\) 为中点的蓝边,有两种可能: \[son[x]->x->fa[x] \] \[son[x]->x->son[x] \] 其中若 ...
- 3月21日考试 题解(数据结构+区间DP+贪心)
前言:T3写挂了,有点难受. --------------- T1 中位数 题意简述:给你一段长度为$n$的序列,分别输出$[1,2k-1]$的中位数$(2k-1\leq n)$. --------- ...
- 单调队列 && 斜率优化dp 专题
首先得讲一下单调队列,顾名思义,单调队列就是队列中的每个元素具有单调性,如果是单调递增队列,那么每个元素都是单调递增的,反正,亦然. 那么如何对单调队列进行操作呢? 是这样的:对于单调队列而言,队首和 ...
- my97DatePicker选择年、季度、月、周、日
My97DatePicker是一款非常灵活好用的日期控件.使用非常简单. 下面总结下使用该日历控件选择年.季度.月.周.日的方法. .选择年 <input id="d1212" ...
- openjudge2989糖果[DP 01背包可行性]
openjudge2989糖果 总时间限制: 1000ms 内存限制: 65536kB 描述 由于在维护世界和平的事务中做出巨大贡献,Dzx被赠予糖果公司2010年5月23日当天无限量糖果免费优惠 ...
随机推荐
- 启动bind时报none:0: open: /etc/named/named.conf: file not found
刚一看,以为是说named.conf文件不存在或权限不够,但仔细查了一下后发现的确在啊,权限改为777也不行.无奈!先查了一下/etc/init.d/named文件里,是在执行/usr/local/n ...
- USACO 1.2 Palindromic Squares (进制转换,回文)
/* ID:twd30651 PROG:palsquare LANG:C++ */ #include<iostream> #include<fstream> #include& ...
- NGUI研究之开发项目的一些使用心得比較细节
不知不觉使用NGI插件已经有一段时间了.感觉NGUI真的是眼下Unity3D中最好用的UI插件. 可是它也有一些不是BUG的BUG,这些问题可能会让新人摸不着头脑,那么这篇文章将总结一下这段时间 ...
- rest_framework-版本-总结完结篇
总urls.py from django.conf.urls import url, include urlpatterns = [ url(r'^api/', include('api.urls') ...
- 8.变量内存CPU原理
编译器先明确是什么类型,然后明确变量名,变量表管理所有的变量,不在变量表内部的变量不能引用.每个变量对应一整块内存 a+1所计算出来的值在寄存器中,只有变量可以被赋值,变量必须在内存里面 c语言内嵌汇 ...
- kindeditor 不能编辑 问题
/*显示上传窗体*/ function ShowUplodToDaily() { var _sdata = grid.getSelecteds(); if (_sdata) { /*创建编辑器*/ v ...
- <Sicily>Pythagorean Proposition
一.题目描述 One day, WXYZ got a wooden stick, he wanted to split it into three sticks and make a right-an ...
- 排序算法(Apex 语言)
/* Code function : 冒泡排序算法 冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值 时间复杂度:O(n*n) 空间复杂度:1 */ List< ...
- Pepper plugin implementation
For Developers > Design Documents > Pepper plugin implementation This document provides a ...
- NodeJS学习笔记 (30)定时器-timers
https://github.com/chyingp/nodejs-learning-guide