一棵有根樹,並且希望多次詢問這棵樹上一段路徑上所有節點深度的 \(k\) 次方和,而且每次的 \(k\) 可能是不同的。此處節點深度的定義是這個節點到根的路徑上的邊數。他把這個問題交給了pupil,但pupil並不會這麼複雜的操作,你能幫他解決嗎?
對每個次數,預處理樹上字首和即可
#include using namespace std;
#define int long long
const int n = 300005;
const int mod = 998244353;
vector g[n];
int n,m,t1,t2,t3,fa[n][20],s[n][55],dep[n],vis[n];
void dfs(int p)
}void dfs2(int p)
}int lca(int p,int q)
int dis(int p,int q,int k)
signed main()
dfs(1);
for(int i=1;i<=n;i++)
}memset(vis,0,sizeof vis);
dfs2(1);
for(int i=1;i<=18;i++)
}cin>>m;
for(int i=1;i<=m;i++)
}
BJOI2018 求和 倍增LCA
master 對樹上的求和非常感興趣。他生成了一棵有根樹,並且希望多次詢問這棵樹上一段路徑上所有節點深度的 k 次方和,而且每次的 k 可能是不同的。此處節點深度的定義是這個節點到根的路徑上的邊數。他把這個問題交給了 pupil 但 pupil 並不會這麼複雜的操作,你能幫他解決嗎?輸入格式 第一行...
BJOI2018 鏈上二次求和
bjoi2018 鏈上二次求和 我說今天上午寫部落格吧。怕自己寫一上午,就決定先寫道題。然後我就調了一上午線段樹。花了2h找到lazy標記沒有清空。我tm清空了有沒有標記沒清空標記本身。又花25min找到某個乘法爆int了。int真的淡疼,要不是longlong自帶巨無霸常數,這輩子都不想用int。...
BJOI2018 治療之雨
有 m 1 個數,第乙個數為 p 每輪 選乙個數 1 再依次選 k 個數 1 要求如果第乙個數 n 不能選它 1 如果第乙個數 0 不能選它 1 如果沒有可選的數,跳過該次選擇 問使得第乙個數 0 的期望步數 n le1500 case le10 設 f i 表示當第乙個數為 i 時期望多少輪變為 ...