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

题目描述 雷涛同学非常的有爱心,在他的宿舍里,养着一只因为受伤被救助的小猫(当然,这样的行为是违反学生宿舍管理条例的).在他的照顾下,小猫很快恢复了健康,并且愈发的活泼可爱了. 可是有一天,雷涛下课回到寝室,却发现小猫不见了!经过一番寻找,才发现她正趴在阳台上对窗外的柿子树发呆… 在北京大学的校园里,有许多柿子树,在雷涛所在的宿舍楼前,就有N棵.并且这N棵柿子树每棵的高度都是H.冬天的寒冷渐渐笼罩了大地,树上的叶子渐渐掉光了,只剩下一个个黄澄澄的柿子,看着非常喜人.而雷涛的小猫恰好非常的爱吃柿子…
雷涛的小猫 题目链接 n^2DP比较好想, f[i][j]表示第i棵树高度为j的最大收益 直接从上到下转移即可,每次记录下max f[1~n][j] 用于下面的转移 f[i][j]=max(f[i][j-1],max(f[1~n][j-Delta])) max(f[1~n][j-Delta])是已经求出来的,O(1)查询 枚举j和i,总复杂度为O(n^2) #include<iostream> #include<cstring> #include<cstdio> usi…
雷涛同学非常的有爱心,在他的宿舍里,养着一只因为受伤被救助的小猫(当然,这样的行为是违反学生宿舍管理条例的).在他的照顾下,小猫很快恢复了健康,并且愈发的活泼可爱了. 可是有一天,雷涛下课回到寝室,却发现小猫不见了!经过一番寻找,才发现她正趴在阳台上对窗外的柿子树发呆- 在北京大学的校园里,有许多柿子树,在雷涛所在的宿舍楼前,就有N棵.并且这N棵柿子树每棵的高度都是H.冬天的寒冷渐渐笼罩了大地,树上的叶子渐渐掉光了,只剩下一个个黄澄澄的柿子,看着非常喜人.而雷涛的小猫恰好非常的爱吃柿子,看着窗外…
题目背景 原最大整数参见P1012 题目描述 雷涛同学非常的有爱心,在他的宿舍里,养着一只因为受伤被救助的小猫(当然,这样的行为是违反学生宿舍管理条例的).在他的照顾下,小猫很快恢复了健康,并且愈发的活泼可爱了. 可是有一天,雷涛下课回到寝室,却发现小猫不见了!经过一番寻找,才发现她正趴在阳台上对窗外的柿子树发呆… 在北京大学的校园里,有许多柿子树,在雷涛所在的宿舍楼前,就有N棵.并且这N棵柿子树每棵的高度都是H.冬天的寒冷渐渐笼罩了大地,树上的叶子渐渐掉光了,只剩下一个个黄澄澄的柿子,看着非常…
BZOJ原题链接 洛谷原题链接 \(DP\)水题. 定义\(f[i][j]\)表示小猫在高度\(i\),位于第\(j\)棵树时最多能吃到的柿子的数量.分为直接往下跳和跳到另一棵树两个决策. 那么很容易写出状态转移方程: \[f[i][j] = \max \{ f[i + 1][j], f[i + Delta][k] \} + T[j][i]\] 注意到时间复杂度为\(O(n ^ 3)\),太高.发现对于第二个决策,针对的高度都是相同的,再开一个数组记录每一高度下最多能吃到的柿子的数量,\(DP\…
题目 这个题可以说是一个很基础偏中等的\(DP\)了,很像\(NOIpD1T2\)的难度,所以这个题是很好想的. 简化题意 可以先简化一下题意,这个题由于从上面向下调和从下向上爬都是一样的,所以我们就可以轻松的想到暴力的方法. 设\(dp[i][j]\)表示i编号的树的j高度从一开始跳最多能吃多少柿子,每次都选择\(max\)(当前这个树下面一格的柿子数,其他树下面跳\(delta\)格的柿子数). 但是这样的时间复杂度是非常大的,主要就在我们在计算出每一高度的所有树的dp之后,下次我们再用到这…
嘟嘟嘟 dp. 刚开始我想的是dp[i][j]表示在第 i 棵树上,高度为h能吃到的最多的果子,如此能得到转移方程: dp[i][j] = max(dp[i][j + 1], dp[k][j + derta]) (k = 1~n && k != i).但因为这样写会导致dp[k][j + derta] (k > i)的部分没有更新,所以应该把dp试的两胃交换一下.这样dp方程就能正常转移了: dp[i][j] = max(dp[i + 1][j], max(dp[i + derta]…
一道DP. 给你一个矩阵里面有很多数,你需要从上往下找到一种跳跃方法使得经过的点的价值之和最大. 具体题面见链接 洛谷P1107 BZOJ1270 很明显是一个二维的DP. #include<bits/stdc++.h> using namespace std; int N, H, Delta; int t[2020][2020];//t为原始生成的图,同时也作为保存状态的二维数组 int dp[2020];//dp[i]表示高度为i时取得的最大价值 inline void input(){/…
题面 以下是luogu给的标签 但字符串是什么鬼.... 玄学... 哦吼~ #include<cstdio> #include<iostream> using namespace std; #define gc ch=getchar() inline int read() { ,f=; char gc; ; +ch-'; return x*f; } #undef gc ],a[][],dp[][]; int main() { n=read(); h=read(); d=read(…
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1270 有n棵树,高度为h.一只猫从任意一棵树的树顶开始,每次在同一棵树上下降1,或者跳到其他树上同时下降d.它经过的地方的果子都会被吃掉,求落地前最多吃多少果子. 分析 高度低的位置的值肯定是由高度高的位置更新得来的.在某一位置,有两种可能: 1.是从这个树上下降1到达这里的. 2.是从其他树上跳来的.由于可以从任意树上跳来,所有选之前吃果子最多的树. 用dp1[i][j]表示到达第i棵树,…