我认为我现在只想和渣渣辉的中国移动就是个渣渣?

0

  题目大意: 给N个连续的钻石问如何切割,才能够付款M的钻石段如果没有刚好M的钻石,那么至少也要保证损失最小
  解题思路: 输入的时候直接计算价值总和,这样可以避免重复计算从i到j的累加和
  同时,每一次输入数据i进行一次判定,设置地位索引low判断从low到i累加,是否超过了M如果超过,说明可能存在符合要求的区间low往前移位,直到找到满足M的区间然后直接输出,如果不满足记录最小值点。
  注意每一次輸入i,low不必从0开始i每往后移动一位,low跟着往前移动即可因为前面的i都已经计算过了,low从零开始只会重复计算
  如果始终找不到M的點,重新从头开始遍历比较之前记录的最小值点,该点是大于M但是最接近M的点保证损失最小。输出所有符合该要求的区间


  还有┅种比较常规的做法是用二分查找,因为求和数组是递增的因此自带升序排列的属性,因此我们只需要查找两者相减等于M或者最接近M。但这种做法需要同时记录所计算的区间比起本文的方法,略显笨拙

我要回帖

更多关于 我现在只想和渣渣辉 的文章

 

随机推荐