VP Educational Codeforces Round 40 (Rated for Div. 2)

news/2025/3/26 11:35:13/文章来源:https://www.cnblogs.com/maburb/p/18789515

A. Diagonal Walking

模拟

点击查看代码
void solve() {int n;std::cin >> n;std::string s;std::cin >> s;int ans = n;for (int i = 0; i + 1 < n; ++ i) {if ((s[i] == 'R' && s[i + 1] == 'U') || (s[i] == 'U' && s[i + 1] == 'R')) {-- ans;++ i;}}std::cout << ans << "\n";
}

B. String Typing

题意:你要构造一个字符串,每次可以添加一个字符,你有一次操作机会可以把当前字符串复制一份到后面。求构造出给定字符串的最小次数。

找最长的前缀使得后面和它相邻的长度相等的串和它一样。

点击查看代码
void solve() {int n;std::cin >> n;std::string s;std::cin >> s;int ans = n;for (int i = 0; i < n / 2; ++ i) {if (s.substr(0, i + 1) == s.substr(i + 1, i + 1)) {ans = std::min(ans, i + 1 + 1 + n - (i + 1) * 2);}}std::cout << ans << "\n";
}

C. Matrix Walk

题意:一个矩阵\((i, j)\)位置上的数是\(y(i-1) + j\)。现在给出一个移动序列上每次到达位置上的数,只能上下左右移动。求\(x, y\)

左右移动只会使得值减少一,上下移动则会减少\(y\)。那么我们记录相邻两个数的差,看除了1之外出现的数是不是只有一个。然后如果只有一个,就以这个数作为\(y\)。然后检查距离为1的数是不是在同一行。
\(x\)取个最大值就行。

点击查看代码
void solve() {int n;std::cin >> n;std::vector<int> a(n);for (int i = 0; i < n; ++ i) {std::cin >> a[i];}std::set<int> s;for (int i = 0; i + 1 < n; ++ i) {if (std::abs(a[i + 1] - a[i]) != 1) {s.insert(std::abs(a[i + 1] - a[i]));}}if (s.size() > 1) {std::cout << "NO\n";} else {int x = 1e9;if (s.empty()) {std::cout << "YES\n";std::cout << x << " " << 1 << "\n";return;}int y = *s.begin();if (y == 0) {std::cout << "NO\n";return;}for (int i = 0; i + 1 < n; ++ i) {if (std::abs(a[i + 1] - a[i]) == 1 && (a[i] - 1) / y != (a[i + 1] - 1) / y) {std::cout << "NO\n";return;}}std::cout << "YES\n";std::cout << x << " " << y << "\n";}
}

D. Fight Against Traffic

题意:给你一个图,有多少点使得向他们连边不会影响\(s\)\(t\)的最短路?

\(s\)\(t\)分别做一次\(dijkstra\)
然后枚举点对,如果起点分别到两个点然后到终点的距离大于等于最短路,就合法。

点击查看代码
void solve() {int n, m, s, t;std::cin >> n >> m >> s >> t;-- s, -- t;std::vector<std::vector<int>> adj(n);for (int i = 0; i < m; ++ i) {int u, v;std::cin >> u >> v;-- u, -- v;adj[u].push_back(v);adj[v].push_back(u);}auto dijkstra = [&](std::vector<int> & dist, int s) -> void {using PII = std::pair<int, int>;std::priority_queue<PII, std::vector<PII>, std::greater<PII>> heap;dist[s] = 0;heap.emplace(dist[s], s);while (heap.size()) {auto [d, u] = heap.top(); heap.pop();if (d != dist[u]) {continue;}for (auto & v : adj[u]) {if (dist[v] > d + 1) {dist[v] = d + 1;heap.emplace(dist[v], v);}}}};const int inf = 1e9;std::vector<int> dists(n, inf), distt(n, inf);dijkstra(dists, s);dijkstra(distt, t);int ans = 0, d = dists[t];for (int i = 0; i < n; ++ i) {for (int j = i + 1; j < n; ++ j) {if (dists[i] + 1 + distt[j] >= d && dists[j] + 1 + distt[i] >= d) {++ ans;}}}std::cout << ans - m << "\n";
}

E. Water Taps

题意:\(x_i \in [0, a_i]\),要使得\(\sum_{i=1}^{n} x_i \times (t_i - T) = 0\),并且要求\(\sum_{i=1}^{n} x_i\)最大。\(x_i\)可以是实数。

直接贪心都选了,然后如果总和小于0,就把\(t_i -T\)为负数的从小到大去掉,如果大于0,则把\(t_i - T\)为正数的从大到小去掉。因为去掉的数可以是实数,所以这样一定更优。

点击查看代码
void solve() {int n;double T;std::cin >> n >> T;std::vector<std::pair<double, double>> a(n);double ans = 0, sum1 = 0, sum2 = 0;for (int i = 0; i < n; ++ i) {std::cin >> a[i].second;}std::vector<std::pair<double, double>> b, c;for (int i = 0; i < n; ++ i) {std::cin >> a[i].first;a[i].first -= T;if (a[i].first == 0) {ans += a[i].second;} else if (a[i].first < 0) {b.emplace_back(a[i]);sum1 += a[i].first * a[i].second;} else {c.emplace_back(a[i]);sum2 += a[i].first * a[i].second;}}std::ranges::sort(b, std::greater<>());std::ranges::sort(c);if (sum1 == 0 || sum2 == 0) {} else if (sum1 == sum2) {for (auto & [y, x] : b) {ans += x;}for (auto & [y, x] : c) {ans += x;}} else if (-sum1 < sum2) {double sum = sum1;for (auto & [y, x] : b) {ans += x;}for (auto & [y, x] : c) {if (sum + x * y >= 0) {ans += -sum / y;break;} else {ans += x;sum += x * y;}}} else {double sum = sum2;for (auto & [y, x] : c) {ans += x;}for (auto & [y, x] : b) {if (sum + x * y <= 0) {ans += -sum / y;break;} else {ans += x;sum += x * y;}}}std::cout << std::fixed << std::setprecision(12);std::cout << ans << "\n";
}

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

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

相关文章

PPT 转高精度图片 API 接口

PPT 转高精度图片 API 接口 文件处理 / 图片处理,将 PPT 文件转换为图片序列。1. 产品功能支持将 PPT 文件转换为高质量图片序列; 支持 .ppt 和 .pptx 格式; 保持原始 PPT 的布局和样式; 转换后的图片支持永久访问; 全接口支持 HTTPS(TLS v1.0 / v1.1 / v1.2 / v1.3); …

20242931 2024-2025-2 《网络攻防实践》第四周作业

20242931 2024-2025-2 《网络攻防实践》第四周作业 1. 实验内容 1.1 实验要求 在网络攻防实验环境中完成TCP/IP协议栈重点协议的攻击实验,包括ARP缓存欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击、TCP会话劫持攻击。 1.2 知识点梳理与总结攻击类型 攻击原理 攻击目…

面试官:工作中优化MySQL的手段有哪些?

MySQL 是面试中必问的模块,而 MySQL 中的优化内容又是常见的面试题,所以本文来看“工作中优化MySQL的手段有哪些?”。工作中常见的 MySQL 优化手段分为以下五大类:索引优化:确保高频查询字段有合适索引。 SQL优化:减少全表扫描、避免不必要计算。 事务与锁优化:避免长事…

分享一个神器免费解释你的梦境

分享一个神器免费解释你的梦境 周公解梦 - 玄机解梦AI 它能运用先进的 AI 技术解析梦境含义,为用户提供便捷、智能的解梦服务。## 一、独特的解梦算法——“三元解梦法”玄机解梦平台的核心技术是其独创的“三元解梦法”,这一方法巧妙地融合了东方传统解梦智慧、现代心理学理…

2025长城杯国赛半决赛 应急响应

2025 长城杯 国赛 半决赛 ISW 应急响应赛场上做应急响应的时候完全是摸不到一点思路,恨不得是见一个ip就交上去试一下.. 赛后复现时刻 1 找ip RStudio加载镜像raw文件对镜像文件进行扫描我们能看到 root 目录下没有文件,以及存在非 root 用户 ubuntu 补充一下:如果root目录下…

picoctf 2025

picoctf 2025 web n0s4n1ty 1 内容 开发人员已将个人资料图片上传功能添加到网站。但是,该实现存在缺陷,这为您提供了一个机会。您的任务(如果您选择接受)是导航到提供的网页并找到文件上传区域。您的最终目标是找到位于/root目录中的隐藏标志 提示File upload was not san…

hgame2025

hgame2025 web Level 24 Pacmanbase64解码 misc Hakuya Want A Girl Friend txt导出zipzip文件被损坏用WinRAR打开 在工具选项下 找到修复压缩文件没发解压缩 显示不是zip文件格式,再看txt文件尾,看到是倒着的png去爆一下长宽高得到压缩包密码,解压缩 得到flag hagme{h4kyu4…

2025 长城杯 国赛 半决赛 ISW 应急响应

2025 长城杯 国赛 半决赛 ISW 应急响应赛场上做应急响应的时候完全是摸不到一点思路,恨不得是见一个ip就交上去试一下.. 赛后复现时刻 1 找ip RStudio加载镜像raw文件对镜像文件进行扫描我们能看到 root 目录下没有文件,以及存在非 root 用户 ubuntu 补充一下:如果root目录下…

Ubuntu中apt设置国内源(以阿里云为例)

摘自:https://zhuanlan.zhihu.com/p/7107285821 在 Ubuntu 系统中,将 APT 源设置为阿里云源可以提高软件包更新和下载速度。设置国内源 1. 备份现有的源列表: sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2. 编辑 sources.list 文件: 使用以下命令打开 sourc…

建筑行业PLM实施案例:5种资源分配矩阵在EPC项目中的创新应用

——PLM如何破解建筑行业资源困局 根据住建部数据,2025年中国建筑行业EPC(设计-采购-施工)项目平均资源浪费率达18%,关键路径延误超30%。而中南建筑设计院通过PLM(产品生命周期管理)系统,在钟祥文化振兴项目中实现资源利用率提升42%,工期缩短10%。本文结合5大资源分配矩…

.NET 生成PDF文件

1、网上检索N种解决方案 QuestPDF:简单方便实用,文档也相对来说全,但是开源协议,当企业规模大的100W美金需要收费,未来存在潜在版权问题。 itext7:感觉实用偏复杂,项目类库引用复杂,不够轻量,看中了 该开源库根据HTML生成PDF,gitlab 查看N套解决方案,经过测试用例编…

关于Transformer中Decoder模块是如何预测下一个字符的算法

关于Transformer模型的Encoder-Decoder模块网上介绍的文章非常多,写的非常详尽,可谓汗牛充栋,尤其关于注意力计算这块,不仅给出了公式而且还有具体的计算步骤。关于Transformer模型我觉得大部分文章语焉不详的有两块(可能是我的理解力比较差): 一是关于FNN层的,就是FNN…