我寫這種水題的解題報告估計要讓神犇給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就是肯定有解,否則暴力判斷。
代碼就不放出來了,想必各位讀者應該會寫