VP AtCoder Beginner Contest 390

news/2025/2/3 16:37:41/文章来源:https://www.cnblogs.com/maburb/p/18697553

A - 12435

点击查看代码
void solve() {int cnt = 0;int a[6]{};for (int i = 1; i <= 5; ++ i) {std::cin >> a[i];}for (int i = 1; i <= 4; ++ i) {cnt += (a[i] != i && a[i + 1] != i + 1);}if (cnt == 1) {std::cout << "Yes\n";} else {std::cout << "No\n";}
}

B - Geometric Sequence

题意:判断一个数列是不是等比数列。

如果用浮点数计算公比可能因为精度误差导致判断错误,可以分解为分数的形式,因为\(a_i : a_{i + 1} = a_1 : a_2, i \in [1, n]\),那么计算\(gcd\)搞个最简分数判断即可。

点击查看代码
void solve() {int n;std::cin >> n;std::vector<int> a(n);for (int i = 0; i < n; ++ i) {std::cin >> a[i];}int x = a[0] / std::gcd(a[0], a[1]), y = a[1] / std::gcd(a[0], a[1]);for (int i = 0; i + 1 < n; ++ i) {int d = std::gcd(a[i], a[i + 1]);if (a[i] / d != x || a[i + 1] / d != y) {std::cout << "No\n";return;}}std::cout << "Yes\n";
}

C - Paint to make a rectangle

题意:有一个矩阵,有些地方涂了黑色,有些地方涂了白色,有些没有涂色。问能不能给所有格子涂色后使得所有黑色格子恰好成为一个矩阵。

找出已有的黑色格子的上下左右边界,判断里面有没有白色格子, 如果没有那么我们一定可以让这个子矩阵全是黑色,否则一个白色格子出现在这中间,不可能让黑色格子恰好形成一个矩阵。

点击查看代码
void solve() {int n, m;std::cin >> n >> m;std::vector<std::string> s(n);for (int i = 0; i < n; ++ i) {std::cin >> s[i];}int a = n, b = 0, c = m, d = 0;for (int i = 0; i < n; ++ i) {for (int j = 0; j < m; ++ j) {if (s[i][j] == '#') {a = std::min(a, i);b = std::max(b, i);c = std::min(c, j);d = std::max(d, j);}}}for (int i = 0; i < n; ++ i) {for (int j = 0; j < m; ++ j) {if (s[i][j] == '.' && i >= a && i <= b && j >= c && j <= d) {std::cout << "No\n";return;}}}std::cout << "Yes\n";
}

D - Stone XOR

题意:将\(n\)个数分成若干个集合,求所有情况下每个集合的和的异或和有多少种。

观察到\(n\)很小,可以爆搜。
每次讨论把\(a_i\)放到前面已有的集合还是自己单独分一个集合,复杂度大概是阶乘级别(应该吧)。
不过要吐槽一下卡set而不卡unordered_set。

点击查看代码
void solve() {int n;std::cin >> n;std::vector<i64> a(n);for (int i = 0; i < n; ++ i) {std::cin >> a[i];}std::unordered_set<i64> s;std::vector<i64> b;auto dfs = [&](auto self, int u, i64 x) -> void {if (u == n) {s.insert(x);return;}b.push_back(a[u]);self(self, u + 1, x ^ a[u]);b.pop_back();for (auto & y : b) {x ^= y;y += a[u];self(self, u + 1, x ^ y);y -= a[u];x ^= y;}};dfs(dfs, 0, 0);std::cout << s.size() << "\n";
}

E - Vitamin Balance

题意:有\(n\)个物品,所有物品总共分成三种。每个物品有价值和体积,你有\(m\)的容量,求在不超过容量的前提下三种物品的最小价值最大是多少。

分别对三类物品做01背包。然后枚举分给第一种物品多少容量和分给第二种物品多少容量,那么第三种物品的容量可以直接计算。然后取其中最小值的最大值即可。

点击查看代码
void solve() {int n, m;std::cin >> n >> m;std::vector<std::pair<int, int> > a, b, c;for (int i = 0; i < n; ++ i) {int v, t, w;std::cin >> t >> v >> w;if (t == 1) {a.push_back({w, v});} else if (t == 2) {b.push_back({w, v});} else {c.push_back({w, v});}}auto dp = [&](std::vector<std::pair<int, int> > a) -> std::vector<int> {std::vector<int> f(m + 1);for (auto & [w, v] : a) {for (int i = m; i >= w; -- i) {f[i] = std::max(f[i], f[i - w] + v);}}return f;};auto fa = dp(a), fb = dp(b), fc = dp(c);int ans = 0;for (int i = 1; i <= m; ++ i) {for (int j = 1; i + j < m; ++ j) {int k = m - i - j;ans = std::max(ans, std::min({fa[i], fb[j], fc[k]}));}}std::cout << ans << "\n";
}

F - Double Sum 3
待补

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

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

相关文章

【每日一题】20250203

你是万千星球的星球! 你是沸腾的准则!你是精心保存的潜伏的萌芽!你是核心!【每日一题】我国发射的“天宫一号”和“神州八号”在对接前,”天宫一号”的运行轨道高度为 \(350 \; \mathrm{km}\),“神州八号”的运行轨道高度为 \(343 \; \mathrm{km}\).它们的运行轨道均视为…

题解:P11637 Mod

题解:P11637 Mod 题目传送门 思路 一种比较简单的方法。 根据题意,我们可以发现在若干次操作后 \(a\) 能变成 \(0\) 的情况下,操作次数为 \(p-a\)。因为 \(b\) 的操作次数与 \(a\) 相同,所以 \(b\) 的值为 \(b-(p-a)\)。因为题面中要求 \(b\) 为一个自然数,所以自然就分成…

如何在markdown中写出横线除号

在 Markdown 中,您可以使用支持 LaTeX 数学公式的环境来表示“除数在上面,被除数在下面”的数学公式形式。以下是具体方法: 1. 使用分数形式 用 LaTeX 的 \frac 表达分数(除号的形式): 块级公式: $$\frac{a}{b}$$内联公式: $\frac{a}{b}$2. 使用纯文本的替代表示法 如果…

彻底搞懂分布式事务 XA 模式

原文地址: https://developer.aliyun.com/article/783796 简介: XA 协议是由 X/Open 组织提出的分布式事务处理规范,主要定义了事务管理器 TM 和局部资源管理器 RM 之间的接口。目前主流的数据库,比如 oracle、DB2 都是支持 XA 协议的。作者 | 朱晋君来源 | 阿里巴巴云原生…

.net6-jwt实现认证和自定义策略授权

场景 客户端根据用户名和密码访问登录接口获取token,服务端登录接口获取账号和密码进行验证,获取用户的角色,若角色是超级管理员则只能授权访问标记为超级管理员的接口,若角色是管理员则只能授权访问标记为管理员的接口。 实现JWT认证 安装JWT包 Microsoft.AspNetCore.Auth…

「ZJOI2017」树状数组 题解

前言 题目链接:洛谷;UOJ;LOJ。 UOJ 上有很强的数据。 题意简述 yzh 做 OI 题维护序列 \(\{a_n\}\)。 她实现了一个后缀和查询函数 \(\displaystyle f(x) = \begin{cases} 0 & \text{ if } x=0 \\ \sum\limits_{i=x}^n a_i & \text{ otherwise } \end{cases}\),和…

什么是SDK?

1. 什么是SDK?1.1. SDK的定义 1.2. SDK的组成 1.3. 举例说明1.3.1. 【示例一】 OpenCV 1.3.2. 【示例二】 JDK 1.3.3. 【示例三】微信SDK2. SDK与API2.1. 什么是API? 2.2. SDK与API的关系3. 什么是SDK开发?3.1. SDK开发包含哪些过程? 3.2. SDK开发的目标是什么? 3.3. SDK开…

小蚁摄像头通过rclone+alist实现监控视频自动上传至云盘

最近,我才发现我白嫖的一刻相册空间才到5g于是就想着把监控录制的视频全传到里面可是,这么搞好像有点麻烦,能不能让我的摄像头自己上传呢? 我的摄像头的型号是小蚁 1080p,刷入了yi-hack-v5 alist 开启ftp yi-hack-v5 ftp界面结果发现不行,放弃了 又看到这位老哥的samba方…

材料检测取样手册系统

为方便查询,特写了查询系统,支持桌面版和网页版,支持Excel导入数据库,支持数据库导出Excel,支持数据库备份,支持恢复数据库。数据库为MySQL

《操作系统真象还原》第十二章 进一步完善内核

本文是对《操作系统真象还原》第十二章学习的笔记,欢迎大家一起交流,目前所有代码已托管至 fdx-xdf/MyTinyOS 。第十二章 进一步完善内核 本文是对《操作系统真象还原》第十二章学习的笔记,欢迎大家一起交流,目前所有代码已托管至 fdx-xdf/MyTinyOS 。 实现系统调用 getpid…

深度学习(RNN,LSTM,GRU)

三个网络的架构图: RNN:LSTM:GRU:特性对比列表:特性RNNLSTMGRU门控数量无3门(输入/遗忘/输出)2门(更新/重置)记忆机制 仅隐藏状态ht显式状态Ct + 隐藏状态ht隐式记忆(通过门控更新状态)核心操作 直接状态传递门控细胞状态更新 门控候选状态混合 计算复杂度O(d2)(1组权…