【UOJ 17】飞扬的小鸟
UOJ 17
题意:在\(n\times m\)的网格中有一些柱子,它们可以通过的区间是\((L_i,R_i)\),位置在\(P_i\)。在第i个位置点击一次会使高度增加\(X_i\),不点击会使高度减少\(Y_i\)。可以重复点击,效果叠加。问最少需要多少次点击来通过这个游戏。或者输出最多能通过的柱子个数。
思路:考虑\(dp(i,j)\)表示到了\((i,j)\)这个点的最少点击次数。
然后转移方程如下:\(dp(i,j)=min dp(i-1,j-kX_{i-1})+k,dp(i-1,j+Y_{i-1})\)。
但是这肯定只能拿\(70pts\)。
所以我们需要进行一些优化。我们记\(min dp(i-1,j-kX_{i-1})+k\)为\(g(i,j)\),那么转移分为两步:
\(dp(i,j)=min(g(i,j),dp(i-1,j+Y_{i-1})\)
\(g(i,j)=min(g(i,j-X_{i-1}), dp(i-1,j-X_{i-1}))+1\)
然后就好了。
其实根本不用这样想,我们只需要这样转移:
首先从小到大枚举\(j\),对于每一个\(j\)更新\(dp(i+1,j+X_i)\)为\(min(dp(i,j),dp(i+1,j))+1\);
然后从小到大(其实这里无所谓)枚举\(j\),对于每一个\(j\)更新\(dp(i+1,j)\)为\(dp(i,j+Y_i)\)。
这样肯定是对的,因为所有的\(dp(i,j)\)都更新到了\(dp(i+1,j+X_i)\),然后又随着\(dp(i+1,j+X_i)\)到了\(dp(i+1,j+2X_i)...\)。
然后需要注意我们的答案在取的时候不要\(dp(i,j)=\infty\)的也取进去。。。
【UOJ 17】飞扬的小鸟的更多相关文章
- UOJ #17. 【NOIP2014】飞扬的小鸟 背包DP
#17. [NOIP2014]飞扬的小鸟 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4902 Solved: 1879 题目连接 http:// ...
- 洛谷 P1941 飞扬的小鸟
洛谷 P1941 飞扬的小鸟 原题链接 首先吐槽几句 noip都快到了,我还不刷起联赛大水题! 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节 ...
- P1907飞扬的小鸟
P1907飞扬的小鸟 描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或 ...
- [codevs3729]飞扬的小鸟
[codevs3729]飞扬的小鸟 试题描述 输入 输出 输出文件名为 bird.out. 共两行. 第一行,包含一个整数,如果可以成功完成游戏,则输出 1,否则输出 0. 第二行,包含一个整数,如果 ...
- Codevs 3729==洛谷P1941 飞扬的小鸟
P1941 飞扬的小鸟 456通过 2.4K提交 题目提供者该用户不存在 标签动态规划2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录 题目描述 Flappy Bird 是一 ...
- NOIP2014 飞扬的小鸟
3. 飞扬的小鸟 (bird.cpp/c/pas) [问题描述] Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的 ...
- Codevs 3729 飞扬的小鸟
飞扬的小鸟 标签 动态规划 NOIp提高组 2014 难度 提高+/省选- 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小 ...
- [NOIP2014][DP]飞扬的小鸟
[NOIP2014]飞扬的小鸟 ——!x^n+y^n=z^n 题目描述: Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画 ...
- Luogu 1941 【NOIP2014】飞扬的小鸟 (动态规划)
Luogu 1941 [NOIP2014]飞扬的小鸟 (动态规划) Description Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度 ...
随机推荐
- python全局解释器锁(GIL)
文章作者:卢钧轶(cenalulu) 本文原文地址:http://cenalulu.github.io/python/gil-in-python/ ,对文章做了适当的修改,加入了一些自己的理解. CP ...
- Python全栈学习_day003知识点
今日大纲: . 基础数据类型 总览 . int . bool . str . for循环 1. 基础数据类型 总览 int: 用于计算,计数等 str:'这些内容',用户少量数据的存储,便于操作 bo ...
- vue路由传参的三种基本方式
现有如下场景,点击父组件的li元素跳转到子组件中,并携带参数,便于子组件获取数据. 父组件中: <li v-for="article in articles" @click= ...
- 关于jQuery出现的新添加元素点击事件无效
//通常点击写法: $(".div").on('click', function () { var $this = $(this); var isActive = $this.ha ...
- vue 父子组件互相传值容易出现的报错
对于父子组件之间的互相传值,报错如下: [Vue warn]: Avoid mutating a prop directly since the value will be overwritten w ...
- 商业智能BI-基础理论知识总结 ZT
因为要加入一个BI项目,所以最近在研究BI相关的知识体系,由于这个方面的知识都是比较零散,开始都很多概念,不知道从何入手,网上找的资料也不多,特别是实战案例方面更少,这里还是先把理论知识理解下吧,分享 ...
- Kotlin入门(13)类成员的众生相
上一篇文章介绍了类的简单定义及其构造方式,当时为了方便观察演示结果,在示例代码的构造函数中直接调用toast提示方法,但实际开发是不能这么干的.合理的做法是外部访问类的成员属性或者成员方法,从而获得处 ...
- java设计模式学习
每次面试都需要看设计模式,每次都很好的理解了,但是实际开发中没有应用总是忘记.现在把它汇总一下. 二十三种设计模式 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模 ...
- [Linux.NET]在CentOS 7.x中编译方式安装Nginx
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发,供俄罗斯大型的 ...
- debian图形界面安装安装GNOME中文桌面环境_刀光剑影_新浪博客 - Google Chrome
debian图形界面安装安装GNOME中文桌面环境 (2012-06-12 16:47:41) 转载▼ 标签: 杂谈 分类: linux 安装GNOME中文桌面环境 安装基本的X系统 # apt-g ...