val

题目描述

有一个值初始为0,接下来n次你可以令其在之前基础上+2或+1或-1。你需要保证,这个值在整个过程中达到的最大值减去达到的最小值不大于k,求方案数,模1,000,000,007。

输入

仅一行,两个空格隔开的正整数n和k。

输出

仅一行,一个非负整数,表示方案数对1,000,000,007取模后的结果。

样例输入

【输入样例A】
3 2
【输入样例B】
233 99

样例输出

【输出样例A】
11
【输出样例B】
316461264

提示

【评分标准】

对于10%的数据,n,k<=15;

对于30%的数据,n,k<=75;

对于50%的数据,n,k<=300;

对于另10%的数据,k=1;

对于100%的数据,n,k<=5,000。

来源

杭二noip2017模拟3


solution

考场只会n^4Dp,还MLE了

首先我们考虑枚举它的上界,算出下界,然后可以n^2Dp

f[i][j]表示前i次操作,和为j的方案数

if(j-1>=0)f[i][j]=(f[i][j]+f[i-1][j-1])%mod;
if(j-2>=0)f[i][j]=(f[i][j]+f[i-1][j-2])%mod;
if(j+1<=k)f[i][j]=(f[i][j]+f[i-1][j+1])%mod;

然后扣去重复的方案即可。

但这样效率仍然过不去。

我们可以把移动上下界看成移动起点。

初始是把所有点都看成起点,一起计算。

然后可以发现,相邻两点重复方案的计算,与整体是相同的。

那么所有点的重复方案就是0~k-1的Dp值。

效率O(n^2)

#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#define maxn 5005
#define mod 1000000007
using namespace std;
int n,k,f[maxn][maxn];
int main()
{
cin>>n>>k;
for(int i=0;i<=k;i++)f[0][i]=1;
for(int i=1;i<=n;i++){
for(int j=0;j<=k;j++){
if(j-1>=0)f[i][j]=(f[i][j]+f[i-1][j-1])%mod;
if(j-2>=0)f[i][j]=(f[i][j]+f[i-1][j-2])%mod;
if(j+1<=k)f[i][j]=(f[i][j]+f[i-1][j+1])%mod;
}
}
long long ans=0,aa=0;
for(int i=0;i<=k;i++)ans=(ans+f[n][i])%mod;
memset(f,0,sizeof f);
k--;
for(int i=0;i<=k;i++)f[0][i]=1;
for(int i=1;i<=n;i++){
for(int j=0;j<=k;j++){
if(j-1>=0)f[i][j]=(f[i][j]+f[i-1][j-1])%mod;
if(j-2>=0)f[i][j]=(f[i][j]+f[i-1][j-2])%mod;
if(j+1<=k)f[i][j]=(f[i][j]+f[i-1][j+1])%mod;
}
}
for(int i=0;i<=k;i++)aa=(aa+f[n][i])%mod;
ans=ans-aa;ans=(ans%mod+mod)%mod;
cout<<ans<<endl;
return 0;
}

val的更多相关文章

  1. Kotlin中变量不同于Java: var 对val(KAD 02)

    原文标题:Variables in Kotlin, differences with Java. var vs val (KAD 02) 作者:Antonio Leiva 时间:Nov 28, 201 ...

  2. 执行插入语句,object val = cmd.ExecuteScalar() val = null

    在写接口的过程中遇到错误:空对象不能转换为值类型 因为我们使用的是petapoco,经过调试后发现是 object val = cmd.ExecuteScalar() 这一句造成的报错, val = ...

  3. jquery的.html(),.text()和.val()方法

    新人一段时间没写前端代码就有点忘记了,现在来复习一下..html()方法 获取集合中第一个匹配元素的HTML内容 或 设置每一个匹配元素的html内容,具体有3种用法: .html() 不传入值,就是 ...

  4. 解密jQuery内核 DOM操作方法(二)html,text,val

    回顾下几组DOM插入有关的方法 innerHTML 设置或获取位于对象起始和结束标签内的 HTML outerHTML 设置或获取对象及其内容的 HTML 形式 看图对照区别 innerText 设置 ...

  5. .html(),.text()和.val()的差异总结

    .html(),.text(),.val()三种方法都是用来读取选定元素的内容:只不过.html()是用来读取元素的html内容(包括html标签),.text()用来读取元素的纯文本内容,包括其后代 ...

  6. html()、text()、val()、innerHTML、value()的区分

    以上的方法可用于一般的html标签(div)与input中分别进行讨论 1.html(): jQuery方法,用于一般标签中,可读写,可以获得写入html标签. 2.text(): jQuery方法, ...

  7. val()失效

    在表单设置了disabled或者readonlye,那么val()方会失效,可以采用$().attr('value','')

  8. .html(),.text()和.val()的差异总结:

    .html(),.text()和.val()的差异总结: 1.html(),.text(),.val()三种方法都是用来读取选定元素的内容:只不过.html()是用来读取元素的html内容(包括htm ...

  9. 关于jquery中html()、text()、val()的区别

    1. .html()用为读取和修改元素的HTML标签    对应js中的innerHTML .html()是用来读取元素的HTML内容(包括其Html标签),.html()方法使用在多个元素上时,只读 ...

  10. jQuery的.html(),.text()和.val()的概述及使用

    本节内容主要介绍的是如何使用jQuery中的.html(),.text()和.val()三种方法,用于读取,修改元素的html结构,元素的文本内容,以及表单元素的value值的方法.jQuery中为我 ...

随机推荐

  1. 关于请求时状态为cancel

    项目中发现有一个问题,在我发送某些请求的时候请求一会状态就变为cancel了,我滴个乖乖,这是咋回事,被取消了,后来经过仔细排查后发现了以下两个问题 1.AJAX和form表单同时使用,(form提交 ...

  2. 学习笔记(七): Logistic Regression

    目录 Calculating a Probability Model Training 1.Loss function for Logistic Regression 2.Regularization ...

  3. mysql优化之explain各参数详解:

    explain简介 explain命令可以获取Mysql如何执行select语句的信息,包括在select语句执行过程中表如何连接和连接的顺序.当我们想知道这个表操作是索引查询还是全表扫描时,我们就可 ...

  4. 自封装的AJAX

    /* * *create by royal in 2019/1/23 * *royalAjax 自封装ajax函数 * *paramsObj JSON类型参数 *require params: * t ...

  5. jQuery支持链式编程,一句话实现左侧table页+常用筛选器总结

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  6. 全文检索ES 服务启动和关闭

    nohup ./elasticsearch &  可以后台开启elasticsearch服务 ps-ef列出所有进程 ps-ef | grep elastic...查找elastic..的进程 ...

  7. 日期增加天数--JS Date

    //日期加天数的方法 //dataStr日期字符串 //dayCount 要增加的天数 //return 增加n天后的日期字符串 function dateAddDays(dataStr,dayCou ...

  8. IE console报错

    需要注意的是,使用console对象查看对象信息,在IE8浏览器下未打开开发人员工具(F12)的情况下 会报'console'未定义错误. 解决办法:1.打开开发人员调试工具(F12)        ...

  9. python之2.x与3.x区别(仅限于基础)

    因为看的是python2.x的书籍.用的是python 3.7.所以先把两者的区别记录一下,仅限于基础. 1.input python3.0之后,不区分input()和raw_input(),统一为i ...

  10. JZOJ 5347. 遥远的金字塔

    Description Input Output Sample Input 5 3 1 6 1 5 3 5 4 4 4 4 Sample Output 15 Data Constraint 做法: 其 ...