技巧总结

时间:2021-03-06 14:48:08   收藏:0   阅读:0

1.有关平均值的一个技巧

判断一个区间\(a_n~a_m\)的平均值avg是否大于一个数b,可等价为判断前缀和数组中\(s_m\)\(s_{n-1}\)的大小关系

证明:
\(avg = \frac{\displaystyle \sum_{n \ \leq i \ \leq \ m}a[i]}{m - n + 1}\)
\(avg - b = \frac{\displaystyle \sum_{n \ \leq i \ \leq \ m}a[i]}{m - n + 1} - b = \frac{\displaystyle \sum_{n \ \leq i \ \leq \ m}a[i] - (m - n + 1) * b}{m - n + 1}\)
因为\(m - n + 1 > 0\), 所以\(avg\)\(b\)的大小关系等价为\(\displaystyle \sum_{n \ \leq i \ \leq \ m}a[i] - (m - n + 1) * b\)与0的大小关系,即每一个a[i]减去b之后的和与0的关系
区间求和如果采用前缀和的方式,问题又可等价为\(s_m - s_{n-1}\)与0的关系,即\(s_m\)\(s_{n-1}\)的大小关系

应用实例
最佳牛围栏一题中使用该技巧实现了算法的关键优化

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!