Codeforces 463E Caisa and Tree dfs+分解質因素
題目鏈接:點擊打開鏈接
題意:
給了一棵樹
每個點有點權
操作1 : 1 u 表示詢問 gcd(Valueof(u), Valueof(v) ) != 1 的所有v 點中深度最大的點
[ v是 path(u, root); && v!=u ]
操作2 : 2 u w 修改點權
思路:
因為操作2的個數不超過50個,所以每次更新點權後都把所有答案預處理一遍。這樣回答是O(1), 更新是n*logn*logn
每次在dfs中計算答案和更新素數棧,dfs完子樹後就把這個點在棧裡刪掉,這樣就能保證任何時刻棧裡存的都是該點到根的路徑
==題意看錯,開始看成求點權最大的點,其實也可以做,把素數棧維護成單調的就可以了,==據說操作2任意個也可以做。。這就不知道咋搞了。。
#include
#include
#include
#include
#include