FJWC2016 day1 t1

我寫這種水題的解題報告估計要讓神犇給D飛了.......

這題的題意大概是:給定一棵樹,節點是10^5級別的,每個節點有權,2個操作,一個是修改某個節點的權值,另一個是詢問X到Y路徑上的點權中是否可以選出3個使之構成三角形的3邊。權值在0——2^31-1.

這題首先想到樹剖,但是發現無法維護。

我們先來看看這樣一個問題:在1到N之間選3個數使之構成三角形的三邊,問最少選多少個數可以保證?記三邊分別爲A,B,C(假設A<=B<=C)那麼就是要滿足A+B>C,顯然這三個數是從小到大排序之後相鄰的3個數(話說這個我想了半小時),然後我們考慮最壞情況,就是A+B=C,那麼再仔細一想就是一個斐波那契數列,這樣就是最壞情況,那麼這個答案就是斐波那契數列<=項的個數加1(設斐波那契數列第一項是1第二項是2);

那麼這題就是一個水題了,0--2^31-1的斐波那契數有47個,那麼2點之間距離大於等於48就是肯定有解,否則暴力判斷。

代碼就不放出來了,想必各位讀者應該會寫

發佈了44 篇原創文章 · 獲贊 11 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章