A. One-dimensional Japanese Crossword
B. Passwords
C. Journey
- \(dp(i,j)\)表示走到\(i\)经过\(j\)个点的最小花费。
D. Maxim and Array
- 记$$M=\prod_{i=1}^{n}{a_i}$$
- 假设将\(a_i=a_i+x\),则增量为\(\frac{M}{a_i}\cdot(a_i+x)-M\),即$$\frac{Mx}{a_i}$$
- 显然为了让值变小,增量需要为负数,且\(|\frac{M}{a_i}|\)需要尽可能大。
- 根据\(M\)的正负分类讨论取正负值即可。
- 因为每次取正值最小、负数最大,可以用优先队列维护。
E. Road to Home
- \(f(i)\)表示在不超过\(r_i\)的前提下最多能唱的数量,\(g(i)\)表示从\(l_i\)前最多能唱的数量。
- 每次从一个位置开始唱歌,必然是能唱到不能唱为止,否则就算中途停下来也只是将唱歌区间后移了而已。
- 注意\(f(i)\)的末位置在\((r_i-p,r_i]\)中,这些位置到\(r_i\)都不足以唱一首歌,那么保存最大数量,数量相同的情况下位置最靠左即可。
- 假设\(f(i)\)的最优位置在\(x\),那么下一次可以唱歌的时间点为\(x+t\),显然需要找到\(j\)满足\(x+t\le r_j\),此时有两种决策:
- 唱歌到\(r_j\)边界,更新\(f(j)\);
- 停止唱歌直到\(l_{j+1}\),更新\(g(j+1)\)。
posted @
2016-10-04 22:18
mcginn
阅读(
177)
评论()
编辑
收藏
举报
点击右上角即可分享
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步