这个题的原始方法谁都会,但是n^3会T。之后直接优化,特别简单,就是每次处理出来每层的最大值,而不用枚举。之前没这么做是因为觉得在同一棵树的时候没有下落,所以不能用这个方法。后来想明白了,在同一棵树上的时候,一步步爬一定好于跳跃。然后就没什么了。

题干:

  1. Description
  2. 雷涛的小猫雷涛同学非常的有爱心,在他的宿舍里,养着一只因为受伤被救助的小猫(当然,这样的行为是违反学
  3. 生宿舍管理条例的)。 在他的照顾下,小猫很快恢复了健康,并且愈发的活泼可爱了。可是有一天,雷涛下课回
  4. 到寝室,却发现小猫不见了!经过一番寻找,才发现她正趴在阳台上对窗外的柿子树发呆…在北京大学的校园里,
  5. 有许多柿子树,在雷涛所在的宿舍楼前,就有N棵。并且这N棵柿子树每棵的高度都是H。冬天的寒冷渐渐笼罩了大
  6. 地,树上的叶子渐渐掉光了,只剩下一个个黄澄澄的柿子,看着非常喜人。而雷涛的小猫恰好非常的爱吃柿子,看
  7. 着窗外树上的柿子,她十分眼馋,于是决定利用自己敏捷的跳跃能力跳到树上去吃柿子。小猫可以从宿舍的阳台上
  8. 跳到窗外任意一棵柿子树的树顶。之后,她每次都可以在当前位置沿着当前所在的柿子树向下跳1单位距离。当然
  9. ,小猫的能力远不止如此,她还可以在树之间跳跃。每次她都可以从当前这棵树跳到另外的任意一棵,在这个过程
  10. 中,她的高度会下降Delta单位距离。每个时刻,只要她所在的位置有柿子,她就可以吃掉。整个“吃柿子行动”
  11. 一直到小猫落到地面上为止。雷涛调查了所有柿子树上柿子的生长情况。饱很想知道,小猫从阳台出发,最多能吃
  12. 到多少柿子?他知道写一个程序可以很容易的解决这个问题,但是他现在懒于写任何代码。于是,现在你的任务就
  13. 是帮助雷涛写一个这样的程序。左图是N=,H=,Delta=2的一个例子。小猫按照图示路线进行跳跃,可以吃到最
  14. 多的8个柿子
  15. Input
  16. 第一行三个整数NHDelta
  17. 接下来N行,每行一个整数Ni代表第i个树上柱子的数量
  18. 接下来Ni个整数,每个整数Tij代表第i个树的高度Tij上有一个柿子
  19. <=N,H<=
  20. <=Ni<=
  21. <=Delta<=N
  22. <=Ti<=H
  23. 输入文件不大于40960Kb
  24. Output
  25.  
  26. 小猫能吃到多少柿子
  27. Sample Input
  28.  
  29. Sample Output

代码:

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cmath>
  4. #include<ctime>
  5. #include<queue>
  6. #include<algorithm>
  7. #include<cstring>
  8. using namespace std;
  9. #define duke(i,a,n) for(int i = a;i <= n;i++)
  10. #define lv(i,a,n) for(int i = a;i >= n;i--)
  11. #define clean(a) memset(a,0,sizeof(a))
  12. const int INF = << ;
  13. typedef long long ll;
  14. typedef double db;
  15. template <class T>
  16. void read(T &x)
  17. {
  18. char c;
  19. bool op = ;
  20. while(c = getchar(), c < '' || c > '')
  21. if(c == '-') op = ;
  22. x = c - '';
  23. while(c = getchar(), c >= '' && c <= '')
  24. x = x * + c - '';
  25. if(op) x = -x;
  26. }
  27. template <class T>
  28. void write(T x)
  29. {
  30. if(x < ) putchar('-'), x = -x;
  31. if(x >= ) write(x / );
  32. putchar('' + x % );
  33. }
  34. int n,m,tot = ;
  35. int a[],num[];
  36. int lz[][];
  37. int sz[][];
  38. int dp[][];
  39. int k;
  40. int main()
  41. {
  42. read(n);read(k);
  43. duke(i,,n)
  44. {
  45. read(a[i]);
  46. if(a[i] == -)
  47. num[++tot] = i;
  48. }
  49. duke(i,,n)
  50. {
  51. duke(j,,k)
  52. {
  53. if(a[i - ] > j)
  54. sz[i][j] = sz[i - ][j] + ;
  55. else
  56. sz[i][j] = sz[i - ][j];
  57. }
  58. }
  59. lv(i,n - ,)
  60. {
  61. duke(j,,k)
  62. {
  63. if(a[i + ] < j && a[i + ] != -)
  64. lz[i][j] = lz[i + ][j] + ;
  65. else
  66. lz[i][j] = lz[i + ][j];
  67. }
  68. }
  69. duke(i,,n)
  70. {
  71. duke(j,,k)
  72. {
  73. if(a[i] != -)
  74. {
  75. dp[i][j] = dp[i - ][j];
  76. continue;
  77. }
  78. else
  79. {
  80. dp[i][j] = INF;
  81. duke(l,,k)
  82. {
  83. dp[i][j] = min(dp[i - ][l] + lz[i][j] + sz[i][j],dp[i][j]);
  84. }
  85. }
  86. }
  87. }
  88. int ans = INF;
  89. duke(i,,k)
  90. {
  91. ans = min(ans,dp[n][i]);
  92. }
  93. duke(i,,n)
  94. {
  95. if(a[i] != -)
  96. {
  97. ans += sz[i][a[i]];
  98. }
  99. }
  100. printf("%d\n",ans);
  101. return ;
  102. }
  103. /*
  104. 5 4
  105. 4 2 -1 -1 3
  106. */

B1270 [BeijingWc2008]雷涛的小猫 dp的更多相关文章

  1. BZOJ 1270: [BeijingWc2008]雷涛的小猫( dp )

    简单的dp.. dp(i,j) = max(dp(x,y))+cnt[i][j], (x,y)->(i,j)是合法路径. 设f(i)= max(dp(x,y))(1≤x≤N, 1≤y≤i), g ...

  2. bzoj1270 BeijingWc2008 雷涛的小猫 DP

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1270 比较水的一道dp f1[i]为高度为i的时候的最大值 f2[i]为当前高度在第i棵树 ...

  3. 【BZOJ1270】1270: [BeijingWc2008]雷涛的小猫 DP

    Description   Input Output Sample Input Sample Output 8 HINT Source 唉这么蠢的Dp没一下子看出来,Dp真是太弱了啦. #includ ...

  4. 【bzoj1270】[BeijingWc2008]雷涛的小猫 dp

    题目描述   输入 输出 样例输入 样例输出 8 题解 dp 设f[i][j]表示在第i棵树的j高度时最多吃到的柿子数. 那么只有两种可能能够到达这个位置:滑下来.跳下来. 滑下来直接用f[i][j+ ...

  5. bzoj 1270: [BeijingWc2008]雷涛的小猫 简单dp+滚动数组

    1270: [BeijingWc2008]雷涛的小猫 Time Limit: 50 Sec  Memory Limit: 162 MB[Submit][Status][Discuss] Descrip ...

  6. BZOJ1270: [BeijingWc2008]雷涛的小猫

    1270: [BeijingWc2008]雷涛的小猫 Time Limit: 50 Sec  Memory Limit: 162 MBSubmit: 836  Solved: 392[Submit][ ...

  7. 1270: [BeijingWc2008]雷涛的小猫

    1270: [BeijingWc2008]雷涛的小猫 Time Limit: 50 Sec  Memory Limit: 162 MBSubmit: 905  Solved: 430[Submit][ ...

  8. [BeijingWc2008]雷涛的小猫

    --BZOJ1270 Description 雷涛的小猫雷涛同学非常的有爱心,在他的宿舍里,养着一只因为受伤被救助的小猫(当然,这样的行为是违反学生宿舍管理条例的). 在他的照顾下,小猫很快恢复了健康 ...

  9. BZOJ 1270 雷涛的小猫 dp

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1270 题目大意: 雷涛的小猫雷涛同学非常的有爱心,在他的宿舍里,养着一只因为受伤被救助 ...

随机推荐

  1. 集合Set、List、Map的遍历方法

    package com.shellway.javase; import java.util.ArrayList; import java.util.Collection; import java.ut ...

  2. Windows2008 Server 常规设置及基本安全策略

    一.系统及程序 1.屏幕保护与电源 桌面右键--〉个性化--〉屏幕保护程序屏幕保护程序 选择无更改电源设置 选择高性能选择关闭显示器的时间 关闭显示器 选 从不 保存修改 2.安装IIS 管理工具-- ...

  3. 基于证书的MS SQL2005数据库镜像搭建

    一.准备工作: 3台服务器同版本,硬盘分区大小相同,安装相同版本数据库软件. host中分别标注3台服务器IP和主机名称. 主体服务器上创建数据库,并进行完整备份数据库和数据库事务. 拷贝备份文件给镜 ...

  4. tp定时任务,传参问题

    <?phpnamespace app\command; use think\console\Command;use think\console\Input;use think\console\i ...

  5. js移动端 可移动滑块

    document.addEventListener('DOMContentLoaded', function() { //动态创建回到首页dom var backDom = document.crea ...

  6. RESTful API 学习【第1篇】

    一. 什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移” REST从资源的角 ...

  7. React 服务器渲染原理解析与实践

    第1章 服务器端渲染基础本章主要讲解客户端与服务器端渲染的概念,分析客户端渲染和服务器端渲染的利弊,带大家对服务器端渲染有一个粗浅认识. 1-1 课程导学1-2 什么是服务器端渲染1-3 什么是客户端 ...

  8. enote笔记语言(3)

    what&why(why not)&how&when&where&which:紫色,象征着神秘而又潜蕴着强大的力量,故取紫色. key&key-memo ...

  9. 查看Linux中自带的jdk ,设置JAVA_HOME

    在配置hadoop是,进行格式化hadoop的时候,出现找不到jdk 我用centos7是64位的, 发现本机有java ,就找了一下其位置 找到了jdk-1.7.0_75 which java [r ...

  10. Leetcode 49.字母异位词分组

    字母异位词分组 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", " ...