D. Distance in Tree
1.E. Arranging The Sheep2.C. Team3.C. RationalLee4.B. Preparing Olympiad5.B. Find The Array6.E. Accidental Victory7.A. Learning Languages8.A. k-th divisor9.B. Quasi Binary10.蓝桥杯-地宫取宝11.D. Divide by three, multiply by two12.D. Game With Array13.B. Composite Coloring14.洛谷 P1204 [USACO1.2] 挤牛奶Milking Cows15.洛谷 P3353 在你窗外闪耀的星星16.洛谷 P8818 [CSP-S 2022] 策略游戏17.Educational Codeforces Round 164 (Rated for Div. 2)18.E. Chain Reaction19.Manthan, Codefest 18 (rated, Div. 1 + Div. 2) D. Valid BFS?
20.D. Distance in Tree
21.D. Multiplication Table22.C. Mixing Water23.B. Greg and Graph24.D. Another Problem About Dividing Numbers25.Acwing 143. 最大异或对26.Acwing 3485. 最大异或和27.C. Checkposts28.E. Lomsat gelral29.D. Powerful array30.D. Deleting Divisors31.Codeforces Round 950 (Div. 3)32.Codeforces Round 951 (Div. 2)33.SuntoryProgrammingContest2024(AtCoder Beginner Contest 357)34.Codeforces Round 952 (Div. 4)35.AtCoder Beginner Contest 35836.B. Modulo Sum37.D. Soldier and Number Game38.AtCoder Beginner Contest 35939.Codeforces Round 954 (Div. 3)40.Codeforces Round 955 (Div. 2, with prizes from NEAR!)41.AtCoder Regular Contest 18042.D - Ghost Ants43.AtCoder Beginner Contest 361)44.Codeforces Round 957 (Div. 3)45.E. Decode46.Educational Codeforces Round 168 (Rated for Div. 2)47.B. Parity and Sum48.P1972 [SDOI2009] HH的项链49.Codeforces Round 966 (Div. 3) VP50.https://codeforces.com/contest/2004/problem/B51.C. Splitting Items52.D. Colored Portals53.Codeforces Round 967 (Div. 2)54.D. Determine Winning Islands in Race55.C. Turtle and Good Pairs56.Codeforces Round 970 (Div. 3)(VP)57.G. Sakurako's Task58.Codeforces Round 971 (Div. 4)59.C. Lazy Narek60.B. Regular Bracket Sequence61.C. News Distribution62.B. Karen and Coffee63.G. 2^Sort64.C. Johnny and Another Rating Drop65.A. Greg and Array66.D2. Magic Powder - 267.C. Schedule Managementhttps://codeforces.com/problemset/problem/161/D
题意:给一棵树,求树上距离为k的节点对的数量。
思路:树上dp,随便找个节点开始遍历。然后枚举当前点的距离为i的节点数与当前点的孩子节点距离为k - i - 1的节点数相乘。
总结:想到了树上dp,也想到了这个思路,但是没想到相乘跟开始遍历的节点值,以及为什么这种遍历可以保证节点对不重复。
void solve(){
int n, k;
cin >> n >> k;
vector<vector<int>> al(n);
for (int i = 0; i < n - 1; ++i){
int u, v;
cin >> u >> v;
u --;
v --;
al[u].emplace_back(v);
al[v].emplace_back(u);
}
long long ans = 0;
vector<vector<long long>> dp(n, vector<long long>(k, 0ll));
function<void(int, int)> dfs = [&](int u, int p){
dp[u][0] = 1;
for (const int& v : al[u]){
if (v != p){
dfs(v, u);
for (int i = 0; i < k; ++i){
ans += dp[u][i] * dp[v][k - i - 1];
}
for (int i = 1; i < k; ++i){
dp[u][i] += dp[v][i - 1];
}
}
}
};
dfs(0, -1);
cout << ans << '\n';
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!