题目链接:http://codeforces.com/problemset/problem/479/E

题意:

  有一栋n层的房子。

  还有一个无聊的人在玩电梯,每次玩电梯都会从某一层坐到另外一层。

  他初始在a层,然后要玩k次电梯。

  这栋楼里还有一个神秘实验室,在b层。

  这让他每次坐电梯受到了限制:

    当前在x层,然后要坐到y层,则必须满足|x-y|<|x-b|

  问你共有多少种坐电梯的方案。

题解:

  表示状态:

    dp[i][j] = numbers

    表示当前在第i层,已经坐了j次电梯,此时的方案数。

  找出答案:

    ans = ∑ dp[i][k]

  如何转移:

    若当前在第i层,则移动距离最大为r = |i-b|-1

    dp[i-r to i-1][j+1] += dp[i][j]

    dp[i+1 to i+r][j+1] += dp[i][j]

    注意判断越界。

  边界条件:

    set dp = 0

    dp[a][0] = 1

  前缀和/差分优化:

    如果直接去做的话,枚举状态要O(N^2),转移要O(N),总复杂度O(N^3)明显超了。

    所以考虑将转移变成O(1)的。

    因为转移是给一段区间加上同一个值,所以可以用差分去做,转移完之后在求一边前缀和就变成了原值。

AC Code:

 #include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_N 5005
#define MAX_K 5005
#define MOD 1000000007 using namespace std; int n,a,b,k;
int dp[MAX_N][MAX_K]; inline int abs(int x)
{
return x> ? x : -x;
} inline int mod(int x)
{
return (x%MOD+MOD)%MOD;
} void sec(int x,int y,int v,int id)
{
if(x>y || y<= || x>n) return;
x=max(x,); x=min(x,n);
y=max(y,); y=min(y,n);
dp[x][id]=mod(dp[x][id]+v);
dp[y+][id]=mod(dp[y+][id]-v);
} int main()
{
cin>>n>>a>>b>>k;
memset(dp,,sizeof(dp));
dp[a][]=;
for(int j=;j<k;j++)
{
for(int i=;i<=n;i++)
{
int r=abs(i-b)-;
sec(i-r,i-,dp[i][j],j+);
sec(i+,i+r,dp[i][j],j+);
}
for(int i=;i<=n;i++)
{
dp[i][j+]=mod(dp[i][j+]+dp[i-][j+]);
}
}
int ans=;
for(int i=;i<=n;i++) ans=mod(ans+dp[i][k]);
cout<<ans<<endl;
}

Codeforces 479E Riding in a Lift:前缀和/差分优化dp的更多相关文章

  1. Codeforces 479E Riding in a Lift(dp)

    题目链接:Codeforces 479E Riding in a Lift 题目大意:有一栋高N层的楼,有个无聊的人在A层,他喜欢玩电梯,每次会做电梯到另外一层.可是这栋楼里有个秘 密实验室在B层,所 ...

  2. Codeforces 479E. Riding in a Lift (dp + 前缀和优化)

    题目链接:http://codeforces.com/contest/479/problem/E 题意:         给定一个启示的楼层a,有一个不能去的楼层b,对于你可以去的下一个楼层必须满足你 ...

  3. Codeforces 479E Riding in a Lift

    http://codeforces.com/problemset/problem/432/D 题目大意: 给出一栋n层的楼,初始在a层,b层不能去,每次走的距离必须小于当前位置到b的距离,问用电梯来回 ...

  4. Codeforces Round #274 (Div. 1) C. Riding in a Lift 前缀和优化dp

    C. Riding in a Lift Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/480/pr ...

  5. Codeforces 480C Riding in a Lift dp

    主题链接:点击打开链接 意甲冠军: 特定 n a b k 构造一个长度k该序列. 使得序列中 对于随意两个相邻的数 | w[i-1] - w[i] | < | w[i] - b | 且第一个数 ...

  6. Codeforces 946G Almost Increasing Array (树状数组优化DP)

    题目链接   Educational Codeforces Round 39 Problem G 题意  给定一个序列,求把他变成Almost Increasing Array需要改变的最小元素个数. ...

  7. Codeforces 1603D - Artistic Partition(莫反+线段树优化 dp)

    Codeforces 题面传送门 & 洛谷题面传送门 学 whk 时比较无聊开了道题做做发现是道神题( 介绍一种不太一样的做法,不观察出决策单调性也可以做. 首先一个很 trivial 的 o ...

  8. Codeforces 856D - Masha and Cactus(树链剖分优化 dp)

    题面传送门 题意: 给你一棵 \(n\) 个顶点的树和 \(m\) 条带权值的附加边 你要选择一些附加边加入原树中使其成为一个仙人掌(每个点最多属于 \(1\) 个简单环) 求你选择的附加边权值之和的 ...

  9. Codeforces Round #271 (Div. 2) E. Pillars 线段树优化dp

    E. Pillars time limit per test 1 second memory limit per test 256 megabytes input standard input out ...

随机推荐

  1. VMware网络连接 桥接、NAt、host-only模式

    如果你想利用VMWare安装虚拟机,或想创建一个与网内其他机器相隔离的虚拟系统,进行特殊的调试工作.此时,对虚拟系统网络连接模式的选择就非常重要了.如果你选择的工作模式不正确,就无法实现上述目的,也就 ...

  2. UIWebView的全屏截图

    项目开发中,我们可能会遇到如下的应用场景:将一篇文章,进行截屏(需要全屏截取,包括滚动部分)后,分享到新浪微博.邮箱等等.前段时间,我在应用开发中实现了该功能,代码也是从网上找到的,自己整理了一下.主 ...

  3. 好文章收藏--五分钟理解一致性哈希算法(consistent hashing)

    一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的简 单哈 ...

  4. 【Mac系统】之破解Navicat Premium for Mac(中文版)

    前期准备工作: 下载Mac中文版本: 下载地址:链接:https://pan.baidu.com/s/1wShOFK9odsSWBSphgqTdEQ  密码:ipsa 下载完成后进行安装,安装步骤省略 ...

  5. FreeSWITCH 学习笔记

    [1]FreeSWITCH学习笔记 1.Windows安装包下载地址:http://files.freeswitch.org/windows/installer/ 2.源码下载地址:http://fi ...

  6. hihoCoder #1312 : 搜索三·启发式搜索(A*, 康托展开)

    原题网址:http://hihocoder.com/problemset/problem/1312 时间限制:10000ms 单点时限:1000ms 内存限制:256MB   描述 在小Ho的手机上有 ...

  7. iOS将Unity导出的Xcode工程导入到另一个Xcode项目, 及常见报错的解决方法

    demo下载地址 http://pan.baidu.com/s/1pLcpKpl 1.Unity导出工程时设置bundle id要与项目一致 2.修改bit code为NO 3.删除Main.stor ...

  8. phpStorm pycharm编辑器主题修改,自定义颜色

    新的启程 注: 本人小菜鸟一枚,内容也是从其他博客中借鉴的,谨以此作为写博客开端. phpstorm修改主题: 1. phpstorm主题下载 http://www.phpstorm-themes.c ...

  9. QQpet exploratory park(DP)

    QQpet exploratory park Today, more and more people begin to raise a QQpet. You can get a lot of plea ...

  10. zoj 3356 Football Gambling II【枚举+精度问题】

    题目: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3356 http://acm.hust.edu.cn/vjudge/ ...