十一七天終于結(jié)束了... 成果是AK了3場(chǎng)CF,做了2場(chǎng)TC的div1 250與500。還算效率可以吧....
代碼見:
http://codeforces.com/contest/226/my
A 漢諾塔,不用多說...
B
有N(N<100,000)堆石子,任何一堆石子i可以放到任何一堆石子j上,代價(jià)是i的石子數(shù)量。
合并以后,這堆石子數(shù)量是兩堆石子的和,標(biāo)號(hào)是j。
現(xiàn)在詢問,每堆石子被+不能超過k的最小代價(jià)。
算法分析:
一開始以為是Huffman Tree,其實(shí)毛關(guān)系沒有,如果k沒有限制那么答案應(yīng)該是所有石子加和減去最大的那個(gè)...
如果有限制k,那么我們想,最后的情形一定是k堆石子加到了某石子i上,那么石子i一定是最大的那個(gè)(因?yàn)閕不用加了)...
那么這k堆的石子標(biāo)號(hào)一定是次大的k個(gè),k堆石子一定是k*k堆石子累加的... 于是這樣類推.... 一開始排個(gè)序就好了...
C
在[l,r]中,選k個(gè)數(shù),讓他們的最大公約數(shù)最大, l,r<1,000,000,000,000
算法分析:
巨坑的一題,答案的分布不是單調(diào)的,無法枚舉結(jié)果。只能改變思路...
假設(shè)答案是ans, 那么一定有
r/ans - (l-1)/ans >= k
a/b下取整最多有2*sqrt(a)個(gè),怎么求自己想吧 == , 于是枚舉ans就可以了....
D 不會(huì)證明
E
給一顆大小100,000的樹,100,000次操作。每次操作要么給一個(gè)節(jié)點(diǎn)賦一個(gè)值,要么求一個(gè)路徑上的比 x大的點(diǎn)數(shù)。
算法分析:
樹鏈剖分轉(zhuǎn)為線形結(jié)構(gòu),然后問題就是如何就一個(gè)區(qū)間里比k大的數(shù)的個(gè)數(shù),而且支持修改。
線段樹樹套按權(quán)值建的線段樹搞之...
posted on 2012-10-07 16:10
西月弦 閱讀(551)
評(píng)論(10) 編輯 收藏 引用 所屬分類:
解題報(bào)告 、
codeforces