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