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

news/2025/3/31 16:49:15/文章来源:https://www.cnblogs.com/maburb/p/18798857

A. Commentary Boxes

题意:把\(n\)变成\(m\)的倍数,每次加一花费\(a\),每次加一花费\(b\)。求最小花费。

点击查看代码
void solve() {i64 n, m, a, b;std::cin >> n >> m >> a >> b;std::cout << std::min((n - n / m * m) * b, ((n + m - 1) / m * m - n) * a) << "\n";
}

B. Micro-World

题意:如果\(a_j < a_i \leq a_j + k\)。则可以删除\(a_j\)。求最多删除多少个。

从大到小排序。然后可以二分找每个数是不是有数可以删去它,也可以一个指针维护。

点击查看代码
void solve() {int n, k;std::cin >> n >> k;std::vector<int> a(n);for (int i = 0; i < n; ++ i) {std::cin >> a[i];}std::ranges::sort(a);std::vector<int> st(n, 1);for (int i = 0, j = 0; i < n; ++ i) {while (j < i && a[j] + k < a[i]) {++ j;}while (j < i && a[i] > a[j]) {st[j ++ ] = 0;}}std::cout << std::ranges::count(st, 1) << "\n";
}

C. Bracket Sequences Concatenation Problem

题意:给你\(n\)个括号序列,选两个序列拼接起来,求有多少拼法可以形成一个合法的序列。

求出每个序列作为右边拼接和左边拼接多出来的左右括号,然后记录下来每个左右括号的个数,最后相应的左右括号乘起来即可。

点击查看代码
void solve() {int n;std::cin >> n;std::vector<std::string> s(n);for (int i = 0; i < n; ++ i) {std::cin >> s[i];}auto checkl = [&](const std::string & s) -> int {int m = s.size();int sum = 0;for (int i = 0; i < m; ++ i) {if (s[i] == '(') {++ sum;} else {-- sum;}if (sum < 0) {return -1;}}return sum;};auto checkr = [&](const std::string & s) -> int {int m = s.size();int sum = 0;for (int i = m - 1; i >= 0; -- i) {if (s[i] == ')') {++ sum;} else {-- sum;}if (sum < 0) {return -1;}}return sum;};std::map<int, int> cnt1, cnt2;i64 ans = 0;for (int i = 0; i < n; ++ i) {int l = checkl(s[i]), r = checkr(s[i]);if (l != -1) {++ cnt1[l];} if (r != -1) {++ cnt2[r];}}for (auto & [x, y] : cnt1) {ans += (i64)y * cnt2[x];}std::cout << ans << "\n";
}

D. Graph And Its Complement

题意:构造一个\(n\)个点的图。使得这个图有\(a\)个联通块,其补图有\(b\)个联通块。

每个图和它的补图至少一个只有联通块。假设有\(x\)联通块,那么在补图里不同联通块里的点都能两两连边,只可能有一个联通块。
那么我们就可以随便构造了,如果\(b=1\),则把\([1, a-1]\)单独一个点,然后后面的点都会\(a\)连边。如果\(a=1\),那么一样的构造,然后取反就行。
需要特判的是\(a = 1, b = 1\)的情况。这个情况我们需要构造一条链,然后\(n=2,3\)的情况是无解的。

点击查看代码
void solve() {int n, a, b;std::cin >> n >> a >> b;if (a > 1 && b > 1 || (a == 1 && b == 1 && (n == 2 || n == 3))) {std::cout << "NO\n";return;}std::vector ans(n, std::vector<int>(n));if (a == 1 && b == 1) {for (int i = 0; i + 1 < n; ++ i) {ans[i][i + 1] = ans[i + 1][i] = 1;}} else if (a > 1) {for (int i = a; i < n; ++ i) {ans[i][a - 1] = ans[a - 1][i] = 1;}} else {for (int i = b; i < n; ++ i) {ans[i][b - 1] = ans[b - 1][i] = 1;}for (int i = 0; i < n; ++ i) {for (int j = 0; j < n; ++ j) {if (i != j) {ans[i][j] ^= 1;}}}}std::cout << "YES\n";for (int i = 0; i < n; ++ i) {for (int j = 0; j < n; ++ j) {std::cout << ans[i][j];}std::cout << "\n";}
}

E. Post Lamps

题意:一个\([0, n]\)的数轴,有\(k\)种路灯,第\(i\)种路灯一个价格为\(a_i\),可以照明\([x, x + i]\)这个区间。有些点不能放路灯,求照明\([0, n]\)的最小代价。

这题其实就是直接暴力接下来。因为对于路灯\(i\),我们每次可以跳\(i\),那么总共跳\(\frac{n}{i}\),直接暴力复杂度加起来是一个调和级数。不过需要处理有些点不能放路灯的情况,我们预处理一个\(pre_i\)表示\([1, i]\)距离\(i\)最近的可以放路灯的地方。

点击查看代码
void solve() {int n, m, k;std::cin >> n >> m >> k;std::vector<int> st(n + 1);for (int i = 0; i < m; ++ i) {int x;std::cin >> x;st[x] = 1;}std::vector<int> a(k + 1);for (int i = 1; i <= k; ++ i) {std::cin >> a[i];}if (st[0] == 1) {std::cout << -1 << "\n";return;}std::vector<int> pre(n + 1);for (int i = 1; i <= n; ++ i) {if (st[i] == 0) {pre[i] = i;} else {pre[i] = pre[i - 1];}}i64 ans = 1e18;for (int i = 1; i <= k; ++ i) {i64 sum = 0;for (int j = 0; j <= n;) {sum += a[i];if (j + i >= n) {break;}if (pre[j + i] == j) {sum = 1e18;break;} else {j = pre[j + i];}}ans = std::min(ans, sum);} if (ans == 1e18) {ans = -1;}std::cout << ans << "\n";
}

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

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

相关文章

K8s Ingress, 你这个老6

Ingress 这个老6,结合nodeport和ClusterIp两种服务类型,你在引流这一块玩的花啊。 入口一夫当关,对内如鱼得水。本文是有态度马甲的第185篇原创。 本文记录了k8s中核心对象Ingress的产生背景和实现机制。 我们都知道k8s Service是一种将Pods通过网络暴露出来的抽象,每个服务…

C# .NET core 中处理图像,SkiaSharp,ImageSharp,NetVips,Magick.net多维度对比

2025年有哪些图像处理库,我们可以在项目中使用哪些库?本文列出了最流行的现有库。 .NET Core图片处理库SkiaSharp(https://github.com/mono/SkiaSharp) Magick.net(https://github.com/dlemstra/Magick.NET) ImageSharp(https://github.com/SixLabors/ImageSharp) NetV…

20243317 实验二《Python程序设计》实验报告

课程:《Python程序设计》 班级: 2433 姓名: 邓雅文 学号:20243317 实验教师:王志强老师 实验日期:2025年3月26日 必修/选修: 公选课 一、实验内容 1、掌握python中函数定义与调用相关知识点 大致框架与C语言相同,同样有实参,形参,可能有返回值,形式如下: def 函数名…

MEBCY-v2

MERCY-v2 信息收集 查找目标主机ip ┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:84:b2:cc, IPv4: 192.168.158.143 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.158.1 00:50:56:c…

人群密度分析预警摄像机

人群密度分析预警摄像机是可以实时地统计出一个指定区域内的总人数。当所监视区域的人员数量达到设定的阀值时摄像机输出报警信号。可设置人数阈值和时间阈值。用于设置触发进入区域内的人数值,达到该设定的阈值则摄像机输出报警信号。人数阈值可以手动设置,系统默认值为5人,…

CloudFlare DNS实现根域名跳转WWW域名,301跳转

0. 目的 托管在CloudFlare上的域名,已配置好www.bktai.com,想在用户访问根域名https://bktai.com时,重定向到 https://www.bktai.com. 为什么是重定向而不是同时可以访问?搜索引擎会搜到重复的内容,且维护两套路径都能正常工作,会造成混乱。 1. 配置根域名 点击自己要设置…

day:32 jmeter及性能测试——介绍

一、性能测试介绍 1、什么叫做性能测试? (1)通过某些工具或手段来检测软件的某些指标是否达到了要求,这就是性能测试 (2)指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试 2、性能测试的时间? 在功能测试完成后才能进行性能测试…

第六周第五天

所用时间:405分钟 代码量(行):689 博客量(篇):20 了解到的知识点: 1.VLAN的创建与划分 今天进行了计算机网络的实验一,在昨天下载的packet tracer上进行,实现了VLAN的创建与划分,进行跨交换机的相同vlan之间的计算机和不同vlan之间的计算机的通信实验2.树状结构查询…

独立按键控制LED数码管

前言 通过1个独立按键,控制LED数码管显示字符。 结合之前我的两篇文章独立按键控制LED流水灯方向 https://www.cnblogs.com/luckydoog/p/18796974数码管静态显示 https://www.cnblogs.com/luckydoog/p/18797690效果原理 提前在程序里存储共阴极数码管的编码表,能表示的字符范…

day:32 jmeter操作数据库——参数化

一、数据库通过用户参数设置变量 1、建一个查询的jdbs请求2、前置处理器中添加用户参数3、修改线程数4、查看结果二、txt文档实现参数化 1.编辑sql语句中导入变量${变量名}新建一个txt文档:data 命名导入txt文档运行以上内容是将sql语句写入到txt文档中引用 2. 将数据写入txt文…