主题链接:点击打开链接

意甲冠军:

特定 n a b k

构造一个长度k该序列。

使得序列中 对于随意两个相邻的数 | w[i-1] - w[i] | < | w[i] - b |

且第一个数 |a - w[1] | < | w[1] - b |

问:

有多少种不同的序列。

思路:dp

对于粗暴的dp复杂度是 n^3

我们能够用前缀和来优化掉一维的dp。。

反正是简单粗暴的题。详细看代码吧。。

  1. #include <cstdio>
  2. #include <iostream>
  3. #include <cstring>
  4. #include <queue>
  5. #include <algorithm>
  6. #include <map>
  7. #include <cmath>
  8. using namespace std;
  9. typedef long long ll;
  10. const int N = 5005;
  11. const ll mod = 1000000007;
  12. int a, b, K, n;
  13. ll dp[N][N], sum[N];
  14. void put(int k){
  15. printf("%d:", k);
  16. for(int i = 1; i <= n; i++)pt(dp[k][i]),putchar(' '); puts("");
  17. }
  18. ll solve(){
  19. dp[0][a] = 1;
  20. for(int k = 1; k <= K; k++)
  21. {
  22. sum[0] = 0;
  23. for(int i = 1; i <= n; i++) {
  24. sum[i] = sum[i-1] + dp[k-1][i];
  25. if(sum[i] >= mod) sum[i] -= mod;
  26. }
  27. for(int i = 1, j; i <= n; i++)
  28. {
  29. if(i==b)continue;
  30. j = (b+i)>>1;
  31. if(i < b)
  32. {
  33. if(b-j <= j-i) j--;
  34. dp[k][i] = sum[j] - dp[k-1][i];
  35. }
  36. else
  37. {
  38. if(j-b <= i-j) j++;
  39. dp[k][i] = sum[n] - sum[j-1] - dp[k-1][i];
  40. }
  41. if(dp[k][i] < 0){
  42. dp[k][i] %= mod;
  43. dp[k][i] += mod;
  44. }
  45. }
  46.  
  47. }
  48. ll ans = 0;
  49. for(int i = 1; i <= n; i++){
  50. ans += dp[K][i];
  51. if(ans >= mod) ans -= mod;
  52. }
  53. return ans;
  54. }
  55. int main() {
  56. while(cin>>n>>a>>b>>K){
  57. memset(dp, 0, sizeof dp);
  58. cout<<solve() % mod<<endl;
  59. }
  60. return 0;
  61. }

版权声明:本文博客原创文章,博客,未经同意,不得转载。

Codeforces 480C 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 480C C. Riding in a Lift(dp)

    题目链接: C. Riding in a Lift time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  4. Codeforces 479E Riding in a Lift:前缀和/差分优化dp

    题目链接:http://codeforces.com/problemset/problem/479/E 题意: 有一栋n层的房子. 还有一个无聊的人在玩电梯,每次玩电梯都会从某一层坐到另外一层. 他初 ...

  5. Codeforces Round #274 Div.1 C Riding in a Lift --DP

    题意:给定n个楼层,初始在a层,b层不可停留,每次选一个楼层x,当|x-now| < |x-b| 且 x != now 时可达(now表示当前位置),此时记录下x到序列中,走k步,最后问有多少种 ...

  6. Codeforces 479E Riding in a Lift

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

  7. 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 ...

  8. Codeforces Round #274 (Div. 2) Riding in a Lift(DP 前缀和)

    Riding in a Lift time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  9. E. Riding in a Lift(Codeforces Round #274)

    E. Riding in a Lift time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

随机推荐

  1. MySQL数据转移至MSSQL详解

    一.安装MySQL ODBC驱动 为MySQL安装Connector/ODBC驱动.在此需要注意的一点是Connector/ODBC驱动与MySQL Server的版本对应问题.   二.创建系统DS ...

  2. Android点滴---ViewHolder通用,优雅写法

    近期在做项目时,又要写 ViewHolder. 突然想到网上看看有没什么好的写法! 不知道你是不是也烦透了写那些没有技术含量的ViewHolder 看看这些.也许会有收获! 然后就找到了以下两篇文章( ...

  3. OCA读书笔记(18) - 使用Support工具

    调查和解决问题 问题:数据库中的任一严重的错误定义为一个问题,一般来说,这些错误包括大家熟悉的ORA-600错误和ORA-04031(共享池超出)错误,涉及数据库问题的所有元数据都存储在ADR中,每个 ...

  4. 使用cocos2d 2.1制作一条河游戏(4): 主要的游戏逻辑BaseLayer设计

    前段时间一直忙着.没有时间更新博客.今天,仍然需要一段时间才能实现对游戏的一小部分,最后打动他. BaseLayer.h: #import <GameKit/GameKit.h> #imp ...

  5. 再见,CSDN

    这是第三次的博客, 首先是从百度改变自己 从他的变化二CSDN 看看多年的积累, 真的不想,但CSDN搜电缆和编辑(新MarkDown更烂)实在不敢恭维 再见CSDN, 新的博客 http://my. ...

  6. 华为-on练习--小写字符数的统计显示

    主题: 手动输入一个字符串,只有小写字母,统计每个字符和输出频率中出现的串,输出.提示可以使用map 样例:输入:aaabbbccc 输出:a 3 b 3 c 3 分析: 看到后面的提示,简直就是不用 ...

  7. 1、Cocos2dx 3.0游戏开发三找一小块前言

    尊重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27094663 前言 Cocos2d-x 是一个通用 ...

  8. 悼念传奇,约翰询问&#183;纳什和他的妻子艾丽西亚致敬,创建一个传奇,爱数学

    约翰·阅读·纳什的传记.我渴望录制通道 我一直相信数字,无论逻辑方程使我们认为.但这种追求一生的后,我问自己:"这是什么逻辑?谁决定的理由?"我的探索让我从物理到形而上,最后到了妄 ...

  9. repeater操作

    protected void rpRole_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ...

  10. maven学习系列(一)—maven安装和基本设置

    maven下载和配置 第一步:下载apache-maven-2.3.2-bin.zip并解压到D:\tools,下载地址http://maven.apache.org/download.cgi 第二步 ...