2025牛客暑期多校训练营4

news/2025/10/11 14:51:46/文章来源:https://www.cnblogs.com/guiyou/p/19132901

For the Treasury!

题意简化

在公元11世纪早期的英格兰,有维京海盗团伙。阿斯凯拉德作为一伙维京海盗的首领,要分\(n\)件排成一列的财宝,按约定他本应拿前\(k\)件。但他夜里偷偷调换财宝(每次只能交换相邻两件,每次交换花费\(c\)),想让自己拿到的财宝总价值减去交换总花费后的利润最大,求这个最大利润。

数据范围

  • \(n\)(财宝数量)、\(k\)(阿斯凯拉德本应拿的前\(k\)件的数量)满足\(0 \leq k \leq n \leq 3 \times 10^5\)
  • 交换一次的花费\(c\)满足\(0 \leq c \leq 10^9\)
  • 每件财宝的价值\(a_i\)满足\(1 \leq a_i \leq 10^9\)

思路

换个计算角度,假设全部都转移到第一个,每个财宝的价值减去交换到第一个的花费,求前k个最大值,那么此时的所求答案等同于多减去了c(k+1)k/2

这道题启发我们应该首先思考确定前k个财宝是那些,然后再进行计算
而直接一个位置一个位置确定不易做到,而只确定第一个位置相对容易

点击查看代码
#include<bits/stdc++.h>using namespace std;
using ll=long long ;
const ll maxn=3e5+10;
ll a[maxn],b[maxn];int main(){ll n,k,c;cin>>n>>k>>c;for(int i=1;i<=n;++i) cin>>a[i];for(int i=1;i<=n;++i) b[i]=a[i]-c*i;sort(b+1,b+1+n,greater<>());ll ans=0;for(int i=1;i<=k;++i)ans+=b[i];ans+=k*(k+1)*c*1ll/2;cout<<ans<<endl;return 0;
}

Blind Alley

题意简化

你设计了一个“气球马里奥”关卡,关卡是 $ N \times M $ 的网格,马里奥从起点 \((1,1)\) 出发,目标是到达终点 \((1,M)\)。网格中部分格子有障碍物(如尖刺),且第一列和最后一列无障碍物

当马里奥位于 \((X,Y)\) 时:

  • 视野范围是满足 $ 1 \leq U \leq N $ 且 $ Y \leq V \leq \min(Y+K,M) $ 的格子 \((U,V)\)(能看到这些格子是否有障碍物);
  • 移动方式为\((X+1,Y)\))、\((X-1,Y)\))、\((X,Y+1)\)),但目标格子必须在网格内且无障碍物。

需要判断:是否存在一条从 \((1,1)\) 到某点 $ s_\ell=(X,Y) $ 的路径,同时满足以下三点:

  1. 马里奥能沿路径从起点移动到 $ s_\ell $;
  2. 路径中任意中间点 $ s_i $,在其前一个位置 $ s_{i-1} $ 的视野下,无法排除从 $ s_i $ 到达终点 \((1,M)\) 的可能性;
  3. 但从 $ s_\ell $ 本身无法移动到终点 \((1,M)\)

数据范围

  • 测试用例数 $ T : 1 \leq T \leq 10^4 $;
  • 单个测试用例的参数:
    • 网格尺寸 $ N, M $、视野范围 $ K : 2 \leq N,M $,且 $ N \cdot M \leq 10^6 ; 1 \leq K \leq M-1 $;
    • 网格障碍:用 $ N $ 个长度为 $ M $ 的二进制字符串表示(1 表示障碍物,0 表示可通行);输入保证第一列和最后一列无障碍物,且存在从 \((1,1)\)\((1,M)\) 的路径
  • 所有测试用例的 $ N \cdot M $ 之和不超过 $ 10^6 $。

思路

较为少见,状态的思想

(generated by AI)
代码通过从终点反向推导,跟踪每个位置的视野范围内是否 “无法排除到达终点的可能性”(状态-1),并利用上下移动的可达性传播状态。最终通过起点的状态判断是否存在符合要求的路径终点,高效解决了问题(时间复杂度
O(N⋅M)

-1代表可能到达,-2代表初始态不可达,取0的时候意味着右边有个障碍,所以开始计数从右往左计数,对于同一行如果连续大于等于k,就有到达的可能性,标为-1,如果可以直接到达(1,m),最终第1行的状态-2

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define int long long// 完全1-based索引:行1~n,列1~m(字符串s[i]的[0]为占位符)
string s[1000006];  // s[i][j]直接对应第i行第j列
int d[1000006];     // d[i]表示第i行当前列的状态// 状态合并函数(逻辑不变)
int c(int x, int y) {if (x == -1 || y == -1) return -1;if (x == -2 || y == -2) return -2;return max(x, y);
}signed main() {int T;cin >> T;while (T--) {int n, m, k;cin >> n >> m >> k;// 读入网格并转为1-based(在字符串前加占位符)for (int i = 1; i <= n; i++) {string tmp;cin >> tmp;s[i] = " " + tmp;  // s[i][1]对应原第1列,s[i][m]对应原第m列d[i] = -2;         // 初始化状态为未处理}// 从倒数第二列(m-1)向左遍历到第一列(1)for (int j = m - 1; j >= 1; j--) {// 步骤1:基于右侧列(j+1)更新当前列(j)的状态for (int i = 1; i <= n; i++) {if (s[i][j+1] == '1') {  // 右侧相邻格有障碍(直接用j+1访问)d[i] = 0;} else {if (d[i] >= 0) d[i]++;  // 累计连续可通行长度if (d[i] >= k) d[i] = -1;  // 超过视野范围,标记为"无法排除终点可达性"}}// 步骤2:向上传播状态(同一列内可向下移动,状态从i传到i+1)for (int i = 1; i < n; i++) {if (s[i][j] == '0') {  // 当前格(i,j)可通行(直接用j访问)d[i + 1] = c(d[i + 1], d[i]);}}// 步骤3:向下传播状态(同一列内可向上移动,状态从i传到i-1)for (int i = n; i > 1; i--) {if (s[i][j] == '0') {  // 当前格(i,j)可通行d[i - 1] = c(d[i - 1], d[i]);}}}// 起点是(1,1),判断其状态是否为-1if (d[1] == -1) cout << "Yes" << endl;else cout << "No" << endl;}return 0;
}

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

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

相关文章

软件测试进阶之路:2025年测试工程师必须掌握的三大热门领域

技术进步永无止境,测试工程师唯有不断学习、持续进阶,才能在快速变化的技术 landscape 中保持核心竞争力。希望本文能为您的测试进阶之路提供有益指引。在软件工程日益复杂的今天,测试工程师的角色正经历深刻变革。…

实用指南:Qt QEventLoop的使用的一个问题讨论

实用指南:Qt QEventLoop的使用的一个问题讨论pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &q…

Putty设置SSH隧道,隧道和代理的原理区别(KIMI)

Putty设置SSH隧道,隧道和代理的原理区别(KIMI)本文内容为和AI大模型KIMI的对话记录,仅供参考。User: 我有一台服务器,用putty和winscp能够登录,但是jupyterlab启动后无法从笔记本的浏览器进入,应该如何设置?需…

创新突破!天翼云TeleDB数据库通过中国信通院数据库迁移工具专项测试

近日,天翼云数据传输服务软件(DTS)依据《数据库迁移工具能力要求》,结合天翼云TeleDB数据库产品,顺利通过中国信息通信研究院(简称“中国信通院”)“可信数据库”数据库迁移工具专项测试。测试结果表明,天翼云…

Node.js基础库介绍与使用

Node.js 核心库是内置的、无需安装的模块,提供了文件操作(fs)、网络通信(http/https)、路径处理(path)、工具函数(util)、事件驱动(events)、流处理(stream)和加密(crypto)等基础功能,是其强大能力的基…

gaussdb常用操作 - 吾辈当奋斗

启停# root登录 su - gauss # 停止 gs_ctl stop # 启动 gs_ctl start# 单节点启动 su - gauss gssp# 不常用的操作 # 停止gaussdb gs_ctl stop -D 路径 # 启动gaussdb gs_ctl start -D 路径 # 重启gaussdb gs_ctl res…

Go语言熟练使用指南

掌握 Go 语言并达到熟练水平需要系统学习以下几个方面的内容: 一、语言基础核心基础语法和特性 变量声明:var vs 短声明 :=数据类型:基本类型、复合类型、类型转换 控制结构:if/else、for循环、switch 函数:多返回…

Webpack与Vite原理深度解析

好的,我们来深入浅出地解析一下 Webpack 和 Vite 的原理。这两者都是现代前端领域非常重要的构建工具,但它们的核心思想和实现方式有根本性的不同。 核心思想对比特性 Webpack Vite核心理念 Bundle(打包)。将所有模…

详细介绍:华为路由基础1

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

UMich EECS 498-007 / 598-005: Deep Learning for Computer Vision

UMich EECS 498-007 / 598-005: Deep Learning for Computer Vision 资源

IIS8.5 安装证书

问题:iis8.5 导入证书后消失(在IIS中不可见,在证书管理中可以看到,显示缺少私钥)。也可使使用工具查看证书的安装情况 解决方案:参考: openSSL 命令:openssl pkcs12 -export -out output.pfx \ -inkey server.…

2025南通婚纱摄影厂家最新推荐榜:匠心工艺与浪漫美学完美结合

2025婚纱摄影厂家最新推荐榜:匠心工艺与浪漫美学完美结合在当代婚庆消费升级的浪潮中,婚纱摄影行业正经历着深刻的变革。据行业数据显示,2024年中国婚纱摄影市场规模已突破千亿元,新人对婚纱照的需求从简单的场景记…

免费音乐软件,哔哔音乐 免费下载及安装!免费音乐播放器

软件介绍 哔哔音乐是一款基于 B 站音乐资源开发的开源免费音乐播放器,支持安卓和 PC 端。软件下载 哔哔音乐下载地址软件功能特点 操作便捷:软件无须注册登录,打开即可使用,界面简洁,主要有搜索、广场、歌单和设置…

多级缓存架构:性能与数据一致性的平衡处理(原理及优势详解+项目实战) - 教程

多级缓存架构:性能与数据一致性的平衡处理(原理及优势详解+项目实战) - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-f…

微信社群开发

微信社群开发,微信机器人制作教程+源码,开发微信机器人/个微/WTAPI框架 微信个人号二次开发,开发微信机器人接口|微信个人号开发|接入指南 微信个人号二次开发,是完整的第三方服务平台,并基于IPAD协议8.0.57开发出…

IStringLocalizer突然失效?线程的“失忆症”

IStringLocalizer服务,配合中间件,根据请求头或Cookie来设置当前线程的语系(Culture)。 问题代码示例: public class HomeController : Controller {private readonly IStringLocalizer<HomeController> _l…

mysql设置最大连接数,MySQL最大连接数设置详解

为什么需要设置最大连接数? MySQL默认的最大连接数是151,这对于小型应用可能够用,但对于高并发场景远远不够。当连接数达到上限时,新的连接请求会被拒绝,出现"Too many connections"错误。了解如何合理…

c# 读取xml到datagridview

c# 读取xml到datagridviewpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &…

微信机器人API开放!手把手教你打造智能聊天机器人

微信机器人API开放!手把手教你打造智能聊天机器人 ​微信二次开发机器人接口开发,java之微信机器人二次开发,微信机器人制作教程API文档 接入指南 对接流程 1.申请api平台账号 2.开通接口权限 3.对接api 4.测试上线…

十二重计数法

Link,限制依次为: \(1\):球之间互不相同,盒子之间互不相同。 \(2\):球之间互不相同,盒子之间互不相同,每个盒子至多装一个球。 \(3\):球之间互不相同,盒子之间互不相同,每个盒子至少装一个球。 \(4\):球之间…