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. 文件系统 - Linux 支持的文件系统类型

    NAME 文件系统 - Linux 支持的文件系统类型:minix, ext, ext2, xia, msdos, umsdos, vfat, proc, nfs, iso9660, hpfs, sy ...

  2. Linux学习记录(三)

    1.Linux的软件安装 1.1.jdk安装 注意:rpm与软件相关命令 相当于window下的软件助手 管理软件 步骤: 1)查看当前Linux系统是否已经安装java 输入 rpm -qa | g ...

  3. 前端小记3——iOS与Android问题

    1.消除transition闪屏 (1)-webkit-transform-style:preserve-3d;  /*设置内嵌的元素在 3D 空间如何呈现:保留 3D*/ (2)-webkit-ba ...

  4. 告诉你今年是哪个生肖年的java程序

    package com.swift; import java.util.Scanner; public class ChineseYear { public static void main(Stri ...

  5. 第三篇、Swift基础学习

    1.常量与变量 什么是常量和变量 在Swift中规定:在定义一个标识符时必须明确说明该标识符是一个常量还是变量 使用let来定义常量,定义之后不可以修改 使用var来定义变量,定义之后可以修改 变量的 ...

  6. 在React中使用Redux数据流

    问题:数据流是什么呢?为什么要用数据流? 答案:1.数据流是我们的行为与相应的抽象 2.使用数据流帮助我们明确了行为的对应的响应 问题: React与数据流的关系 1.React是纯 V 层的前端框架 ...

  7. 【数学 随机 技巧】cf364D. Ghd

    随机化选讲的例题 John Doe offered his sister Jane Doe find the gcd of some set of numbers a. Gcd is a positi ...

  8. SQL初次接触

    1.SQL对大小写不敏感 2.部分SQL数据库要求结尾分号 3.分为两种DML(数据操作语言)和DDL(数据定义语言) sql中一些注意要点 1.设置主键 一般会在一个数据内设置一个主键(名字通常为i ...

  9. LigerUI 快速开发UI框架 链接

    LigerUI 快速开发UI框架 http://www.ligerui.com/ jQuery ligerUI 中文官方网站 http://www.ligerui.com/demo.html

  10. thinkphp-PHP实现Excel导入 导出功能

    Excel导出 //功能:导出题库模板 public function get_contract_ex() { ob_get_clean(); header("Content-Typ:tex ...