ABC394 A ~ F

news/2025/2/23 11:08:16/文章来源:https://www.cnblogs.com/biyimouse/p/18731917

ABC394

感觉这场 ABC 蛮简单的啊,我这么菜都场切了 \(A\sim F\)

A

int main() {string s; cin >> s;for (int i = 0; i < s.size(); i ++)if (s[i] == '2') cout << 2;return 0;
}

B

const int N = 60;
string s[N];
int n;int main() {cin >> n;for (int i = 1; i <= n; i ++) cin >> s[i];sort(s + 1, s + 1 + n, [&](string a, string b) {return a.size() < b.size();});for (int i = 1; i <= n; i ++) cout << s[i];return 0;}

C

注意不要看错题

int main() {string s; cin >> s;for (int i = s.size() - 1; i >= 1; i --)if (s[i] == 'A' && s[i - 1] == 'W') s[i] = 'C', s[i - 1] = 'A';cout << s << endl;return 0;
}

D

就是一个判断括号序列是否合法的题,使用栈进行匹配即可。

stack<char> stk;
string s;int main() {cin >> s;map<char, char> h;h[']'] = '[', h['>'] = '<', h[')'] = '(';for (int i = 0; i < s.size(); i ++) {if (s[i] == '(' || s[i] == '<' || s[i] == '[') stk.push(s[i]);else {if (stk.empty() || stk.top() != h[s[i]]) {puts("No");return 0;} else stk.pop();}}if (!stk.empty()) puts("No");else puts("Yes");return 0;
}

E

注意到 \(N \leq 100\),考虑暴力广搜。

由于我们需要找回文串,所以考虑确定一个回文中心然后暴力向两边拓展相同的字符。

然后你要注意都是单向边,所以你往外拓展的时候要注意边的方向,并且注意不要重复算,不然时间就爆了。

时间复杂度是 \(O(n^4)\) 的,但实际上跑不到这么高,而且 \(AT\) 时间开 2s 不卡常。

const int N = 110;
int n, d[N][N];
char g[N][N];void bfs(int x, int y) {queue<PII> q;q.push({x, y});if (x == y) d[x][y] = 0;else d[x][y] = 1;while (q.size()) {auto t = q.front(); q.pop();int a = t.first, b = t.second;for (int i = 1; i <= n; i ++)if (g[i][a] != '-') for (int j = 1; j <= n; j ++)if (g[b][j] != '-' && g[i][a] == g[b][j]) {if (d[a][b] + 2 < d[i][j]) {d[i][j] = d[a][b] + 2;q.push({i, j});} } }
}int main() {n = read();for (int i = 1; i <= n; i ++) for (int j = 1; j <= n; j ++)cin >> g[i][j];memset(d, 0x3f, sizeof d);for (int i = 1; i <= n; i ++)   for (int j = 1; j <= n; j ++)if (i == j || g[i][j] != '-')bfs(i, j);for (int i = 1; i <= n; i ++, puts(""))for (int j = 1; j <= n; j ++)printf("%d ", d[i][j] == INF ? -1 : d[i][j]);return 0;
}

F

考虑树形 \(DP\)

先不考虑至少有一个顶点的度数为 \(4\) 这个要求,剩余的条件显然是很好数位 \(DP\) 的。

\(ans\) 为全局答案,\(f[u]\) 表示就是祖先所构成的树的一个以 \(u\) 为树根的子树的最大顶点数。那么转移分为两种情况,一种是 \(u\) 的度数为 \(1\),那由于 \(u\) 还有一个父亲连着它,所以 \(u\) 的最大顶点数就是 \(1\);另一种当 \(u\) 的度数为 \(4\) 时,就找 \(u\) 的儿子中 \(f\) 值前三大的 \(f[u_1] + f[u_2] + f[u_3] + 1\)

然后还要更新全局答案。\(ans\) 就应该用以 \(u\) 为根的子树的最大顶点数更新,度数为 \(4\) 时找出前四大的 \(f[u_1] + f[u_2] + f[u_3] + f[u_4] + 1\)\(ans\) 的度数为 \(1\) 时,那就找出最大的 \(f[u_1] + 1\)

注意这里 \(ans\) 计算的是以 \(u\) 为整棵树根,而不是 \(u\) 为子树根。

最后我要忘记还有一个顶点度数为 \(4\) 的要求,所以最后找出的答案至少要有 \(5\) 个及以上的结点。

const int N = 200010;
int n, a[N], b[N];
int f[N], ans;
int h[N], ne[N << 1], e[N << 1], idx;void add(int a, int b) {e[idx] = b, ne[idx] = h[a], h[a] = idx ++;
} void dp(int u, int fa) {vector<int> sons;f[u] = 1;for (int i = h[u]; ~i; i = ne[i]) {int j = e[i];if (j == fa) continue;dp(j, u);sons.push_back(f[j]);}sort(sons.begin(), sons.end(), [&](int a, int b) {return a > b;});if (sons.size()) ans = max(ans, sons[0] + 1);if (sons.size() >= 3) f[u] = max(f[u], sons[0] + sons[1] + sons[2] + 1);if (sons.size() >= 4) ans = max(ans, sons[0] + sons[1] + sons[2] + sons[3] + 1);    
}int main() {n = read();memset(h, -1, sizeof h);for (int i = 1; i < n; i ++) {int a = read(), b = read();add(a, b); add(b, a);}dp(1, -1);printf("%d\n", ans <= 4 ? -1 : ans);return 0;
}

G

待补

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/888302.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Jaav SE/程序生命周期] 优雅的Java应用程序的启停钩子框架

序了解 spring 生态及框架的 java er 都知道,spring 应用的生命周期管理及配套接口较为优雅、可扩展。但脱离 spring 的 java 应用程序,如何优雅地启停、管理程序的生命周期呢?(以便应用程序在我们需要的运行阶段中进行相应的动作)概述:Java普通应用程序的启停钩子框架 前…

迈金C416码表体验

之前一直在用黑鸟单车和小米健康记录骑行数据, 后来又发现strava和keep的骑行分享功能做的比较好. 于是使用的运动app就越来越多, 骑行时带着手机的同时还要开好几个app太麻烦了, 同时也想给车上加一个速度显示器, 由此考虑入一个码表.对功能要求不高, 最主要的需求是gps和速度…

ASP.NET Core Swagger 汉化

在wwwroot文件夹添加汉化的JS文件const translations = {"Failed to load API definition": "API定义加载失败","Errors": "错误信息","Hide": "隐藏","Fetch error": "获取错误","Inte…

Svelte 最新中文文档教程(17)—— 生命周期钩子

前言 Svelte,一个语法简洁、入门容易,面向未来的前端框架。从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1:Svelte 以其独特的编译时优化机制著称,具有轻量级、高性能、易上手等特性,非常适合构…

[Java SE] FunctionInterface 注解: 函数式接口(JDK8+)

概述:FunctionInterface/函数式接口 简介函数式接口是指只包含一个抽象方法的接口,可以使用 Lambda 表达式来创建该接口的实例。@FunctionalInterface 注解是 Java Lang 包中的一个注解,用于标识一个接口是函数式接口。@FunctionalInterface 注解的作用:编译时检查:@Funct…

去中心化 AI:赋权还是混乱?

DeepSeek 如何在 AI 去中心化方面迈出了巨大的一步,以及为什么这比你想象的更重要Nadia Piet + AIxDESIGN & Archival Images of AI / Better Images of AI / AI Am Over It / CC-BY 4.02025 年 1 月 27 日星期一,DeepSeek —— 一家几乎凭空冒出来的中国初创公司 —— 发…

SmolLM2:多阶段训练策略优化和高质量数据集,小型语言模型同样可以实现卓越的性能表现

SmolLM2 采用创新的四阶段训练策略,在仅使用 1.7B 参数的情况下,成功挑战了大型语言模型的性能边界:在 MMLU-Pro 等测试中超越 Qwen2.5-1.5B 近 6 个百分点 数学推理能力(GSM8K、MATH)优于 Llama3.2-1B 在代码生成和文本重写任务中展现出色表现 支持 8K tokens 的长文本处…

2025.2.23 (java的学习)

。。。昨天星期六一整天都没学习。。做了一个哆啦a梦。✌附一个目前弄的哆啦a梦全家桶吧。

自动驾驶两个传感器之间的坐标系转换

有两种方式可以实现两个坐标系的转换。 车身坐标系下一个点p_car,需要转换到相机坐标系下,旋转矩阵R_car2Cam,平移矩阵T_car2Cam。点p_car在相机坐标系下记p_cam. 方法1:先旋转再平移 p_cam = T_car2Cam * p_car + T_car2Cam 需要注意的是,这里的平移矩阵T_car2Cam是车身坐…

8-2 MySQL 索引的设计原则(超详细说明讲解)

8-2 MySQL 索引的设计原则(超详细说明讲解) @目录8-2 MySQL 索引的设计原则(超详细说明讲解)1. 测试数据准备2. 哪些情况适合创建索引2.1 字段的数值有唯一性的限制2.2 频繁作为 WHERE 查询条件的字段2.3 经常 GROUP BY 和 ORDER BY 的列2.4 UPDATE、DELETE 的 中的WHERE 条件列…

北京时间同步

本地时间与北京时间 同步 参考:https://blog.csdn.net/qq_46092061/article/details/128748789 本地显示秒数while True:current_time = time.strftime("%H:%M:%S")if current_time >= "19:59:59":print("start")breaktime.sleep(0.5) # 减…

客流统计自动识别摄像头

客流统计自动识别摄像头提供了重要的决策依据。通过分析客流数据,商家可以了解顾客的消费习惯与高峰时段,从而优化营业时间、调整商品布局和促销策略。例如,如果某个时间段内顾客数量明显增加,商家可以考虑在此时推出促销活动,以吸引更多消费者。此外,通过长期的数据积累…