C++ 算法竞赛、06 周赛篇 | AcWing 第97场周赛
AcWing 第97场周赛
4944 热身计算
#include <bits/stdc++.h>
using namespace std;
int a, b;
int main() {
cin >> a >> b;
cout << min(a, b);
cout << " " << abs(a - b) / 2;
return 0;
}
4945 比大小
考查K进制转换十进制
#include <bits/stdc++.h>
using namespace std;
int const N = 15;
int x, y, n, m;
int nums[N];
int main() {
long long res_a = 0, res_b = 0;
cin >> n >> x;
for (int i = 1; i <= n; i++) {
cin >> nums[i];
}
long long t = 1;
for (int i = n; i >= 1; i--) {
res_a += nums[i] * t;
t *= x;
}
cin >> m >> y;
for (int i = 1; i <= m; i++) {
cin >> nums[i];
}
t = 1;
for (int i = m; i >= 1; i--) {
res_b += nums[i] * t;
t *= y;
}
if (res_a > res_b)
puts(">");
else if (res_a < res_b)
puts("<");
else
puts("=");
return 0;
}
4946 叶子节点
- 无向边要开两倍点数的数组,见常量 M
- cnt 统计每个有效叶子节点的个数
- st 记录遍历过的点,让每个点只遍历一次
- dfs
- count 统计还有几条边没走,0 条则为叶子节点
- 遍历所有子节点,根据子节点颜色分两种情况
- 黑色:更新最大长度,连续长度+1
- 白色:不更新最大长度,连续长度置 0
#include <bits/stdc++.h>
using namespace std;
int const N = 1e5 + 10, M = 2e5 + 10;
int h[N], e[M], ne[M], idx;
int color[N];
int n, m;
void add(int a, int b) { e[idx] = b, ne[idx] = h[a], h[a] = idx++; }
int cnt;
bool st[N];
void dfs(int u, int black_max, int black_now) {
st[u] = true;
int count = 0;
for (int i = h[u]; ~i; i = ne[i]) {
int j = e[i];
if (st[j]) continue;
count++;
if (color[j])
dfs(j, max(black_max, black_now + 1), black_now + 1);
else
dfs(j, black_max, 0);
}
if (!count)
if (black_max <= m) cnt++;
}
int main() {
cin >> n >> m;
memset(h, -1, sizeof h);
for (int i = 1; i <= n; i++) cin >> color[i];
for (int i = 1; i <= n; i++) {
int x, y;
cin >> x >> y;
add(x, y);
add(y, x);
}
dfs(1, 0, color[1]);
cout << cnt;
return 0;
}
看不懂我的,也可以看这个题解
- 用入度来找叶子节点(叶子节点的入度是 1)
- 每个节点都验证一遍连续长度是否满足情况,存储其状态
- 最后需要遍历一次所有节点统计满足条件的叶子节点数量
分类:
C/C++
, Algorithm | 比赛,周赛
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!