val
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。
来源
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的更多相关文章
- Kotlin中变量不同于Java: var 对val(KAD 02)
原文标题:Variables in Kotlin, differences with Java. var vs val (KAD 02) 作者:Antonio Leiva 时间:Nov 28, 201 ...
- 执行插入语句,object val = cmd.ExecuteScalar() val = null
在写接口的过程中遇到错误:空对象不能转换为值类型 因为我们使用的是petapoco,经过调试后发现是 object val = cmd.ExecuteScalar() 这一句造成的报错, val = ...
- jquery的.html(),.text()和.val()方法
新人一段时间没写前端代码就有点忘记了,现在来复习一下..html()方法 获取集合中第一个匹配元素的HTML内容 或 设置每一个匹配元素的html内容,具体有3种用法: .html() 不传入值,就是 ...
- 解密jQuery内核 DOM操作方法(二)html,text,val
回顾下几组DOM插入有关的方法 innerHTML 设置或获取位于对象起始和结束标签内的 HTML outerHTML 设置或获取对象及其内容的 HTML 形式 看图对照区别 innerText 设置 ...
- .html(),.text()和.val()的差异总结
.html(),.text(),.val()三种方法都是用来读取选定元素的内容:只不过.html()是用来读取元素的html内容(包括html标签),.text()用来读取元素的纯文本内容,包括其后代 ...
- html()、text()、val()、innerHTML、value()的区分
以上的方法可用于一般的html标签(div)与input中分别进行讨论 1.html(): jQuery方法,用于一般标签中,可读写,可以获得写入html标签. 2.text(): jQuery方法, ...
- val()失效
在表单设置了disabled或者readonlye,那么val()方会失效,可以采用$().attr('value','')
- .html(),.text()和.val()的差异总结:
.html(),.text()和.val()的差异总结: 1.html(),.text(),.val()三种方法都是用来读取选定元素的内容:只不过.html()是用来读取元素的html内容(包括htm ...
- 关于jquery中html()、text()、val()的区别
1. .html()用为读取和修改元素的HTML标签 对应js中的innerHTML .html()是用来读取元素的HTML内容(包括其Html标签),.html()方法使用在多个元素上时,只读 ...
- jQuery的.html(),.text()和.val()的概述及使用
本节内容主要介绍的是如何使用jQuery中的.html(),.text()和.val()三种方法,用于读取,修改元素的html结构,元素的文本内容,以及表单元素的value值的方法.jQuery中为我 ...
随机推荐
- c++ bitset 10进制转二进制
#include <bitset> using namespace std; void main() { int a; cin>>a; cout<<bitset&l ...
- Smallest Common Multiple-freecodecamp算法题目
Smallest Common Multiple 1.要求 找出能被两个给定参数和它们之间的连续数字整除的最小公倍数. 2.思路 设定一个twoMultiple(a,b)函数,求出输入两个参数的最小公 ...
- SPOJ1043 GSS1(线段树)
题意 给出$n$个数,每次询问区间$(l, r)$内最大字段和 Sol 在合并子树的时候,答案仅有四种情况 打四个标记维护即可 查询同理,用类似update的方式合并 注意查询的时候不能按照以前的方式 ...
- linux配置邮箱服务
配置邮箱服务Linux常见的邮箱客户端是mail或mutt:服务端有sendmail服务(centos 5).postfix服务(centos 6).这里我们不使用本地的邮件服务,而是使用本地的邮件客 ...
- Emgu.CV.CvInvoke的类型初始值设定项引发异常
被这个问题蛋疼了一个下午,终于解决了.我的服务器出现这个问题的原因:可能是没有安装emgucv. 解决方法: 1.下载并安装emgucv 下载地址:链接: https://pan.baidu.com/ ...
- 【PHP】php中json_decode()和json_encode()
1.json_decode() json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行 ...
- java+Mysql大数据的一些优化技巧
众所周知,java在处理数据量比较大的时候,加载到内存必然会导致内存溢出,而在一些数据处理中我们不得不去处理海量数据,在做数据处理中,我们常见的手段是分解,压缩,并行,临时文件等方法; 例如,我们要将 ...
- 使用JFreeChart生成报表
1.JFreeChart简介 JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications,servlets以及JSP等使用所设计. ...
- Louis Armstrong【路易斯·阿姆斯特朗】
Louis Armstrong Louis Armstrong had two famous nicknames. 路易斯·阿姆斯特朗有两个著名的绰号. Some people called him ...
- Debug调试文件
在debug.h中设置g_debug_switch即可控制调试级别. /* debug.c */ #include "debug.h" const char *get_log_le ...