码迷,mamicode.com
首页 > 其他好文 > 详细

斜率优化

时间:2017-09-19 22:59:02      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:一个   序列   题意   引导   ext   斜率优化   die   gradient   分析   

Gradient

  题意

  给定长度为 n 的序列 A = {a[1], a[2], ..., a[n]} , 求 G[2], G[3], G[4], ..., G[n] .

  G[i] = max((a[i] - a[j]) / (i - j)) , 1 <= j < i .

  分析

  尝试找到答案的性质. ans = (a[i] - a[j]) / (i - j) , 化简得 j * ans - j = i * ans - i . 所以 ans 是直线 i * x - i 与之前的一条直线 j * x - j 的最后一个交点.

  这种直线相关的式子引导我们想到了凸包, 随着 i 的递增, 我们可以用栈维护直线 {j * x - j} 的下凸壳.

  观察发现对于任意的 i , 与直线 i * x - i 的最后一个交点一定是和下凸壳的上一条直线的交点.

 

斜率优化

标签:一个   序列   题意   引导   ext   斜率优化   die   gradient   分析   

原文地址:http://www.cnblogs.com/Sdchr/p/7554014.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!