BJOI2018 求和 樹上字首和,LCA

2022-06-06 22:24:19 字數 704 閱讀 3520

一棵有根樹,並且希望多次詢問這棵樹上一段路徑上所有節點深度的 \(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 時期望多少輪變為 ...