题目背景

原最大整数参见P1012

题目描述

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

可是有一天,雷涛下课回到寝室,却发现小猫不见了!经过一番寻找,才发现她正趴在阳台上对窗外的柿子树发呆…

在北京大学的校园里,有许多柿子树,在雷涛所在的宿舍楼前,就有N棵。并且这N棵柿子树每棵的高度都是H。冬天的寒冷渐渐笼罩了大地,树上的叶子渐渐掉光了,只剩下一个个黄澄澄的柿子,看着非常喜人。而雷涛的小猫恰好非常的爱吃柿子,看着窗外树上的柿子,她十分眼馋,于是决定利用自己敏捷的跳跃能力跳到树上去吃柿子。

小猫可以从宿舍的阳台上跳到窗外任意一棵柿子树的树顶。之后,她每次都可以在当前位置沿着当前所在的柿子树向下跳111单位距离。当然,小猫的能力远不止如此,她还可以在树之间跳跃。每次她都可以从当前这棵树跳到另外的任意一棵,在这个过程中,她的高度会下降Delta单位距离。每个时刻,只要她所在的位置有柿子,她就可以吃掉。整个“吃柿子行动”一直到小猫落到地面上为止。

雷涛调查了所有柿子树上柿子的生长情况。他很想知道,小猫从阳台出发,最多能吃到多少柿子?他知道写一个程序可以很容易的解决这个问题,但是他现在懒于写任何代码。于是,现在你的任务就是帮助雷涛写一个这样的程序。

图为N=3,H=10,Delta=2N=3, H=10, Delta=2N=3,H=10,Delta=2的一个例子。小猫按照图示路线进行跳跃,可以吃到最多的888个柿子

输入输出格式

输入格式:

第一行有三个以空格分隔的整数,分别代表N,H,DeltaN,H,DeltaN,H,Delta

接下来的NNN行,每行第一个整数为NiN_iNi​,代表第i棵树上的柿子数量。

接下来是NiN_iNi​个整数,每个整数Tij代表第i棵柿子树的TijT_{ij}Tij​高度上长有一个柿子。

输出格式:

一个整数,即小猫最多吃到的柿子数。

输入输出样例

输入样例#1:
复制

  1. 3 10 2
  2. 3 1 4 10
  3. 6 3 5 9 7 8 9
  4. 5 4 5 3 6 9
输出样例#1: 复制

  1. 8

说明

1≤N,H≤20001 ≤ N, H ≤ 20001≤N,H≤2000

0≤Ni≤50000 ≤ N_i ≤ 50000≤Ni​≤5000

1≤Delta≤N,1≤Tij≤H1 ≤ Delta ≤ N,1 ≤ T_{ij} ≤ H1≤Delta≤N,1≤Tij​≤H

输入文件大小不大于40960KB40960KB40960KB

来源 Excalibur, 2008

不太明白为什么luogu把这个标签放置为 “贪心”里面;

当然应该是 dp ;

转移方程: dp[ i ][ j ]=max( dp[ i ][ j+1 ]+maxx[ j+dlt ] )+ num[ i ][ j ];

maxx [ j ]=max( maxx[ j ],dp[ i ][ j ] );

其中 dpi,j 表示在第 i 棵树,高度为 j 时的最优值;

maxxi 表示 高度为 i 时的最优解;

然后 dp 就完成了;

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. #include<cstdlib>
  5. #include<cstring>
  6. #include<string>
  7. #include<cmath>
  8. #include<map>
  9. #include<set>
  10. #include<vector>
  11. #include<queue>
  12. #include<bitset>
  13. #include<ctime>
  14. #include<deque>
  15. #include<stack>
  16. #include<functional>
  17. #include<sstream>
  18. //#include<cctype>
  19. //#pragma GCC optimize(2)
  20. using namespace std;
  21. #define maxn 200005
  22. #define inf 0x7fffffff
  23. //#define INF 1e18
  24. #define rdint(x) scanf("%d",&x)
  25. #define rdllt(x) scanf("%lld",&x)
  26. #define rdult(x) scanf("%lu",&x)
  27. #define rdlf(x) scanf("%lf",&x)
  28. #define rdstr(x) scanf("%s",x)
  29. typedef long long ll;
  30. typedef unsigned long long ull;
  31. typedef unsigned int U;
  32. #define ms(x) memset((x),0,sizeof(x))
  33. const long long int mod = 1e9 + 7;
  34. #define Mod 1000000000
  35. #define sq(x) (x)*(x)
  36. #define eps 1e-3
  37. typedef pair<int, int> pii;
  38. #define pi acos(-1.0)
  39. //const int N = 1005;
  40. #define REP(i,n) for(int i=0;i<(n);i++)
  41. typedef pair<int, int> pii;
  42. inline ll rd() {
  43. ll x = 0;
  44. char c = getchar();
  45. bool f = false;
  46. while (!isdigit(c)) {
  47. if (c == '-') f = true;
  48. c = getchar();
  49. }
  50. while (isdigit(c)) {
  51. x = (x << 1) + (x << 3) + (c ^ 48);
  52. c = getchar();
  53. }
  54. return f ? -x : x;
  55. }
  56.  
  57. ll gcd(ll a, ll b) {
  58. return b == 0 ? a : gcd(b, a%b);
  59. }
  60. int sqr(int x) { return x * x; }
  61.  
  62. /*ll ans;
  63. ll exgcd(ll a, ll b, ll &x, ll &y) {
  64. if (!b) {
  65. x = 1; y = 0; return a;
  66. }
  67. ans = exgcd(b, a%b, x, y);
  68. ll t = x; x = y; y = t - a / b * y;
  69. return ans;
  70. }
  71. */
  72.  
  73. int N, H, dlt;
  74. int num[3000][5010];
  75. int dp[3000][5001];
  76. int maxx[maxn];
  77.  
  78. int main() {
  79. //ios::sync_with_stdio(0);
  80. rdint(N); rdint(H); rdint(dlt);
  81. for (int i = 1; i <= N; i++) {
  82. int tmp; rdint(tmp);
  83. for (int j = 1; j <= tmp; j++) {
  84. int tmpy; rdint(tmpy);
  85. num[i][tmpy]++;
  86. }
  87. }
  88. for (int i = H; i >= 1; i--) {
  89. for (int j = 1; j <= N; j++) {
  90. dp[j][i] = max(dp[j][i + 1], maxx[i + dlt]) + num[j][i];
  91. maxx[i] = max(maxx[i], dp[j][i]);
  92. }
  93. }
  94. printf("%d\n", maxx[1]);
  95. return 0;
  96. }

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

  1. bzoj1270 BeijingWc2008 雷涛的小猫 DP

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

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

  3. BZOJ 1270 雷涛的小猫 dp

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

  4. P1107 [BJWC2008]雷涛的小猫

    题目描述 雷涛同学非常的有爱心,在他的宿舍里,养着一只因为受伤被救助的小猫(当然,这样的行为是违反学生宿舍管理条例的).在他的照顾下,小猫很快恢复了健康,并且愈发的活泼可爱了. 可是有一天,雷涛下课回 ...

  5. 【洛谷P1107】 [BJWC2008]雷涛的小猫

    雷涛的小猫 题目链接 n^2DP比较好想, f[i][j]表示第i棵树高度为j的最大收益 直接从上到下转移即可,每次记录下max f[1~n][j] 用于下面的转移 f[i][j]=max(f[i][ ...

  6. BZOJ1270[BJWC2008]雷涛的小猫

    雷涛同学非常的有爱心,在他的宿舍里,养着一只因为受伤被救助的小猫(当然,这样的行为是违反学生宿舍管理条例的).在他的照顾下,小猫很快恢复了健康,并且愈发的活泼可爱了. 可是有一天,雷涛下课回到寝室,却 ...

  7. B1270 [BeijingWc2008]雷涛的小猫 dp

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

  8. BZOJ1270或洛谷1107 [BJWC2008]雷涛的小猫

    BZOJ原题链接 洛谷原题链接 \(DP\)水题. 定义\(f[i][j]\)表示小猫在高度\(i\),位于第\(j\)棵树时最多能吃到的柿子的数量.分为直接往下跳和跳到另一棵树两个决策. 那么很容易 ...

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

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

随机推荐

  1. 关于c++中命名空间namespace

    一.定义命名空间: 步骤一:在.h文件中:namespace  ns{.......}//将定义的类和全局变量,全局函数写入花括号内. 步骤二:在.cpp文件中: using namespace ns ...

  2. leetcode 268 Missing Number(异或运算的应用)

    Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missin ...

  3. numpy.ndarray类型的数组元素输出时,保留小数点后4位

    因为计算结果数组中每个值都是很长的一串小数,看起来比较乱,想格式化一下输出方式. 这是个看起来很简单的问题,但是方法找了很久. 方法也是看起来很简单,用 numpy.set_printoptions( ...

  4. linux命令学习笔记(60):scp命令

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行 拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务 ...

  5. [转]七个对我最好的职业建议(精简版)--Nicholas C. Zakas

    一.不要别人点什么,就做什么 我的第一份工作,只干了8个月,那家公司就倒闭了.我问经理,接下来我该怎么办,他说: "小伙子,千万不要当一个被人点菜的厨师,别人点什么,你就烧什么.不要接受那样 ...

  6. 【转】Pro Android学习笔记(十一):了解Intent(中)

    Intent的构成 Intent可以带有action,data(由URI表达),extra data(key/value map,键值对),指定的类名(成为component name).一个inte ...

  7. JVM插庄之一:JVM字节码增强技术介绍及入门示例

    字节码增强技术:AOP技术其实就是字节码增强技术,JVM提供的动态代理追根究底也是字节码增强技术. 目的:在Java字节码生成之后,对其进行修改,增强其功能,这种方式相当于对应用程序的二进制文件进行修 ...

  8. mybatis---demo1--(1-n)----bai

    实体类1: package com.etc.entity; import java.util.List; public class Teacher { private int tid; private ...

  9. AutoMapper学习笔记

    进入公司后学习到的东西,之前记录在github上 现在搬运过来 AutoMapperDemo 需要安装两个包 AutoMapper AutoMapper.Extensions.Microsoft.De ...

  10. web实现本地缓存的方法

    Cookie(或者Cookies) 指一般网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密). cookie一般通过http请求中在头部一起发送到服务器端.一条c ...