hdu 5358(尺取法)
解題思路:這題可以利用尺取法,不過需要兩個指針。如果采用一個指針,會出現(xiàn)這種情況,由于是取對數(shù),所以中間可能會有很多l(xiāng)og2S(i,j)的值相等,如果只有一個指針,會使得一些區(qū)間沒有被算進(jìn)去。比如0,0,1,1,0這種情況。
正解:
1、首先把它展開。發(fā)現(xiàn)沒啥用。
2、然后發(fā)現(xiàn)S(i,j)最大就是10的十次方。然后一旦log之后,最大就是34貌似。就枚舉所有的log值,算出后面乘以多少。這里可以用一種全新的二分姿勢。
枚舉左端點(diǎn)。好了,現(xiàn)在左端點(diǎn)i固定了。比如從log[S[i,l] ] + 1經(jīng)過log之后得到k,log[S[i,l+1] ]+ 1 得到的也是k……一直到log[S[i,r-1] ]+1 得到的才是k,然后log[S[i,r] ] + 1 得到的是k+1了。區(qū)間是前閉后開的。那么這一段的i和j的總和就是((i + l) + (i+l+1) + ?…… (i + r - 1) )那么一共有(r - l )個i+ 等差數(shù)列求和公式(a1+an) * n /2 ? 等比數(shù)列求和公式:a1 * (1-q^n)/(1-q)
參考博客:http://www.myexception.cn/ai/1985602.html
http://blog.csdn.net/zjck1995/article/details/47321881
總結(jié)
以上是生活随笔為你收集整理的hdu 5358(尺取法)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 禁止IE兼容模式
- 下一篇: ant-design-vue 快速入手及