第一次滑雪(1)

        上个周六,我们两个项目组去今年最后一次回归-----滑雪。车行山路,两边视野很开阔。全是半拉子工地,看来房地产商已经把触角伸到大山之中了。
       快到滑雪场时,路左边冒出一上岛咖啡屋,心想谁会驱车这么远来喝杯咖啡。不一会,路右边又站起一攀岩场。车至林海雪场停了下来,一下车,山里的冷风吹得人真有点瑟瑟发抖。遥望对面山坡已经被开发成一宏伟的公墓。公墓依山而建,层次感很强,能长眠于此,或许也真是不错。不过好像这阴间的房价也和阳间的一样,涨了很多,咱们这种穷人,生前买不起房,死后这几平也是无力承担呀。
      进雪场大厅,穿雪鞋,领雪板,雪杖。穿上笨重的雪鞋后,走路已成问题,按导游指点,用脚后跟走路,才勉强进入雪地。雪坡上已经有了很多人,也有很多人已经在不断地摔倒,爬起来,再摔,但是都很高兴。
       我们都是初学者,自然只能在初级雪道混了。刚开始不会滑,在平地上,用雪杖撑着也不能滑动。后来渐渐领悟到了,便穿着长长的雪板,在雪杖的帮助下,艰难爬坡。看着会滑的人,乘手扶步梯上到坡顶,然后飘然从顶滑下,我们只有羡慕的份,没有那份勇气去挑战。累得半死爬到一定高度,然后转身几秒就滑到了底,心里很是失落。滑雪倒不累,累就累在爬坡了,好像我们不是来滑雪的,是来登山的,还是登雪山,有那种攀登珠峰的登山运动员的装备的感觉。慢慢地我明白了怎么滑,不会跌倒了,但是遇上前方有人,我就傻了,只能眼睁睁地冲上去,然后连自已带前面的人都跌倒在雪地上。好在摔在雪地也不会受伤,也不疼。
       有好几次,更是郁闷,好不容易出了一身汗,爬得比较高了,可是脚下却开始打滑,已经停不住了,然后便无可奈何地倒着滑倒了坡底。多次的爬上去,滑下来,累得实在不行了,便学别人脱掉雪板,只穿雪鞋,扛着雪板到半山腰。可是到了半山腰,放下雪板,左脚很容易穿上去了,但是右脚一离地,两个雪板便同时住下滑。试了几次都不行,没办法,只好用“杀手锏”了。我先是穿好左脚的雪板,然后借助雪杖,右脚在腾空的同时,去用力套上已经开始下滑的右脚的雪板。幸运的是,我成功了,顺利地滑到了坡底。
       艰难地试了一次,又回到穿着长长雪板爬坡的过程,每次爬都让我想起了红军长征时,攀登雪山的过程,当然我们比他们容易多了。后来看着别人用雪杖拖着雪板上到半山腰,然后再穿上,再滑。经过取经和观察,我也像他们一样,拖着雪板上到半山腰,然后把雪板和下滑的方向垂直放下,这样就顺利地穿上了雪板,然后就是飘然而下。
       一次,爬得比别人都高时,转身一看,确实有些高度。下滑时,也很漂亮,我也渐渐明白了去如何用脚下控制速度。但是,因为“刹车”掌握得还是不很成熟,结果一下子冲到了雪坡底下的防护绳网前,速度却还没减为零,我便只好硬着头皮撞了上去,算是“上网”了。倒没什么事,只是两只脚的雪板都从网眼中冲了出去,我自然也坐到了地上。旁边一位美女过来想要帮我,可我不知道为什么却本能地摆了摆手说“不用”(后悔呀!!!)。自己用手扣掉雪鞋连接雪板的扣,自己爬了起来。
       再后来拖着雪板上坡也太累了,我便抱着雪板在胸前,上到坡上,再滑。一次,当我正从好不容易爬上的高度,听着耳边的风声下滑时,突然眼前出现了杀出了一个程咬金,挡住了我的去路。仔细一看,还是位美女,说时迟,那时快,我眼看就要冲到美女身后,只听得我大喝一声“快让开呀”! 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
题目描述 给出一个$n\times m$的矩阵,每个位置上有一个非负整数,代表这个位置的海拔高度。一开始时,有一个人站在其中一个位置上。这个人可以向上、下、左、右四个方向移动,但是只能移动到海拔高度比当前位置低或者相等的位置上。一次移动只能移动一个单位长度。定义一个位置为“山顶”,当且仅当从这个位置开始移动,可以一直走到海拔高度比它低的位置上。请问,这个矩阵中最多有多少个“山顶”? 输入格式 第一行两个整数,分别表示$n$和$m$。 接下来$n$行,每行$m$个整数,表示整个矩阵。 输出格式 输出一个整数,表示最多有多少个“山顶”。 样例输入 4 4 3 2 1 4 2 3 4 3 5 6 7 8 4 5 6 7 样例输出 5 算法1 (递归dp) $O(nm)$ 对于这道题,我们可以使用递归DP来解决,用$f(i,j)$表示以$(i,j)$为起点的路径最大长度,那么最后的答案就是所有$f(i,j)$中的最大值。 状态转移方程如下: $$ f(i,j)=\max f(x,y)+1(x,y)是(i,j)的下一个满足条件的位置 $$ 注意:这里的状态转移方程中的$x,y$是在枚举四个方向时得到的下一个位置,即: - 向上:$(i-1,j)$ - 向下:$(i+1,j)$ - 向左:$(i,j-1)$ - 向右:$(i,j+1)$ 实现过程中需要注意以下几点: - 每个点都需要搜一遍,因此需要用双重for循环来枚举每个起点; - 对于已经搜索过的点,需要用一个数组$vis$来记录,防止重复搜索; - 在进行状态转移时,需要判断移动后的点是否满足条件。 时间复杂度 状态数为$O(nm)$,每个状态转移的时间复杂度为$O(1)$,因此总时间复杂度为$O(nm)$。 参考文献 C++ 代码 算法2 (动态规划) $O(nm)$ 动态规划的思路与递归DP类似,只不过转移方程和实现方式有所不同。 状态转移方程如下: $$ f(i,j)=\max f(x,y)+1(x,y)是(i,j)的下一个满足条件的位置 $$ 注意:这里的状态转移方程中的$x,y$是在枚举四个方向时得到的下一个位置,即: - 向上:$(i-1,j)$ - 向下:$(i+1,j)$ - 向左:$(i,j-1)$ - 向右:$(i,j+1)$ 实现过程中需要注意以下几点: - 每个点都需要搜一遍,因此需要用双重for循环来枚举每个起点; - 对于已经搜索过的点,需要用一个数组$vis$来记录,防止重复搜索; - 在进行状态转移时,需要判断移动后的点是否满足条件。 时间复杂度 状态数为$O(nm)$,每个状态转移的时间复杂度为$O(1)$,因此总时间复杂度为$O(nm)$。 参考文献 C++ 代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值