首頁| 新聞| 娛樂| 游戲| 科普| 文學| 編程| 系統| 數據庫| 建站| 學院| 產品| 網管| 維修| 辦公| 熱點
給出一棵有根樹,一開始每個節點都有一個權值。要求資瓷三個操作: S x delta節點x的權值增加delta M x delta以x為根的子樹的所有節點的權值增加delta Q x詢問(∑lca(p,q)==xv[p]+v[q])/(∑lca(p,q)==x) n,m<=300000
一開始覺得nlog2的算法過不了,其實跑的飛快。 因為這題涉及到子樹和祖先的修改和詢問,所以直接就想到了樹剖。 分母上的值顯然可以預處理,那么我們就考慮如何維護分子上的值。 設sum[x]表示以x為根的子樹的權值和,那么分子上的值顯然就等于v[x]?(size[x]?1)+∑fa[y]==xsum[y]?(size[x]?size[y]) 我們直接用一個ans數組記錄每個節點的答案,現在考慮修改。 首先先用線段樹維護樹剖。用一個數組nx[x]表示x所在的重鏈中x的子節點,沒有則為0 對于一個S操作,先修改當前點的答案,然后考慮如何維護其祖先的答案。 對于一條需要修改的重鏈,除了其第一個節點外,不難發現其余節點的答案所修改的權值就是delta*(size[x]-size[nx[x]]),那么就可以先修改每條鏈的第一個點,其余節點就可以在線段樹上打標記啦。M操作除了先修改其子樹的答案然后把delta變為size[x]*delta其余同理。
索泰發布一款GTX 1070 Mini迷
AMD新旗艦顯卡輕松干翻NVIDIA
索泰發布一款GTX 1070 Mini迷你版本:小機
芭蕾舞蹈表演,真實美到極致
下午茶時間,悠然自得的休憩
充斥這繁華奢靡氣息的城市迪拜風景圖片
從山間到田野再到大海美麗的自然風景圖片
肉食主義者的最愛美食烤肉圖片
夏日甜心草莓美食圖片
人逢知己千杯少,喝酒搞笑圖集
搞笑試卷,學生惡搞答題
新聞熱點
疑難解答
圖片精選
Dictionary數據類型在Darwin視頻服
可穿戴手勢識別控制器
網友關注