首页 > [NOIP2014]飞扬的小鸟
头像 __故人__
发表于 2020-10-19 19:21:20
分析 我们可以先定义状态 为在第 列,第 行所需要的最小点击次数。那么我们有如下转移 这个是如果选择点击的转移。 这个是不点的转移。那么我们通过滚动数组的技巧,第一种的转移优化到 。然后对于 的时候特判一下就好了。时间复杂度为 。对于障碍物我们直接赋值 。 代码 #include& 展开全文
头像 Dear㉿You
发表于 2020-10-21 20:14:58
飞扬的小鸟 分析 直接进入正题 单取一个位置来看,假设当前为第 i 列,高度为 j ,这个高度要么是从位置 i - 1 落下来,要么则是点击屏幕飞上来的,这难道不是一个状态转移方程?即枚举当前位置和高度,设为f [ i ] [ j ],则 但是注意,这个空间是有限的——高度不可能低于1或高于 展开全文
头像 林思艺
发表于 2020-10-19 20:48:17
题意 今天的题意很难简化诶,就提醒一下吧,就算没有管道(障碍物),也是有上下界的哦。 分析 我们令表示为在第列,第行所需要的最小点击次数。那如果是上升,状态转移方程就类似完全背包转移方式;如果是下降状态转移方程就类似背包转移方式。飞行过程中如果高度超过了那就需要特判来降为。 代码 #include& 展开全文
头像 savage
发表于 2019-09-01 18:11:59
题目描述 为了简化问题,我们对游戏规则进行了简化和改编: 1. &nbs 展开全文
头像 DeNeRATe
发表于 2020-10-19 21:57:28
分析 首先我们可以列出一个转移方程式 我们发现这个转移式其实是01背包和完全背包的合并版所以我们可以分开进行维护温馨提示:一定要理清思路之后再下手,不然就在线%JK_LOVER巨佬 代码 //P1941 #include <algorithm> #include <iostream 展开全文
头像 issue是云哥的小迷×呀
发表于 2020-10-20 00:21:21
定义为跳跃到的最小代价 那么枚举每个座标和每个座标 每个状态都是前一个位置跳跃若干次上来的,所以可以写出很暴力的代码 #include <bits/stdc++.h> using namespace std; const int maxn=10009; int n,m,k,id=1; i 展开全文
头像 熠丶
发表于 2020-10-19 17:24:52
做法:dp 思路: 1.先用结构体把每个横坐标的情况记录下来 2.dp[i][j]表示到坐标(i,j)最少需要跳的次数 3.考虑上升转移和下降转移,其中上升转移要考虑到顶这种特殊情况 代码 #include <bits/stdc++.h> using namespace std; # 展开全文
头像 rk_no
发表于 2020-10-20 16:11:28
题目: 游戏界面是一个长为,高为的二维平面,其中有个管道(忽略管道的宽度)。 小鸟始终在游戏界面内移动。小鸟从游戏界面最左边任意整数高度位置出发,到达游戏界面最右边时,游戏完成。 小鸟每个单位时间沿横坐标方向右移的距离为1,竖直移动的距离由玩家控制。如果点击屏幕,小鸟就会上升一定高度X,每个单位时间 展开全文
头像 sunrise__sunrise
发表于 2020-10-20 21:28:47
题目意思 你有一个长是 n 宽是 m 的空间,在这个空间中存在 k 个柱子你不能碰到柱子或者掉落第0行,这样你都会死。在每个列中,你可以选择点击屏幕进行跳跃,或者等它自由落体掉落,跳跃可以在一个瞬间点击多次,降落却不行。下面给出 n 列每次点击跳跃的高度以及落下的高度。最后给出 k 个柱子的坐标,并 展开全文
头像 ZZZYM
发表于 2022-03-08 17:26:57
[NOIP2014]飞扬的小鸟 总体思路不多说,我就说一下为什么要先把上升的完全背包做完,再做下降的01背包 先上代码 80分代码 对每个(i,j)(i,j)(i,j), 把完全背包和01背包都一次性做了 for (int i = 1; i <= n; i++) { for (int 展开全文