Monsters And Spells

news/2025/9/29 20:21:44/文章来源:https://www.cnblogs.com/wuzihe/p/19119452

题目大意

给定一个长度为 \(n\) 的序列 \(a\),你需要构造一个序列 \(b\) 满足:

  • \(b_0 = 0\)
  • 对于任意一个 \(1 < i < n\)\(b_i \ge a_i\)
  • 对于任意一个 \(1 < i < n\)\(b_i\)\(0\)\(1\)\(b_{i-1} + 1\)

构造一个 \(b\) 使得 \(sum = \sum_{i = 1}^{n}{b_i}\) 最小,请输出这个 \(sum\)

思路

转换

对于构造一个 \(b\) 数组是非常困难的,考虑转换 \(a\) 数组,使问题变简单并且不会改变答案。

先考虑无解的情况,只有在当存在一个 \(1 \le i \le n\),使 \(a_i > i\) 无解,因为就算每次都加 \(1\),也不可能大于 \(a_i\)

其次对于每一个 \(i\)(\(2 \le i \le n\)),要想满足 \(b_i \ge a_i\)\(b_{i - 1}\) 至少为 \(a_i - 1\),转化为式子为 \(b_i = \max(a_i, b_{i + 1} - 1)\)

转化后可以发现,不仅不改变答案,而且对于每一个 \(i\),只要取一个不小于 \(b_i\) 的数就可以满足条件。

求解答案

对于每一个处理过的 \(b_i\),分成两种情况:

  1. \(b_i = 0\)\(1\):则 \(b_i\) 就取 \(0\)\(1\)
  2. \(b_i \neq 0\)\(1\):则 \(b_i\) 就取 \(b_{i - 1} + 1\)

可以证明,这种取法一定使最优的。

代码

#include <iostream>
using namespace std;const long long N = 1000010;
long long n, a[N], ans[N], b[N];int Main() {scanf("%d", &n);for (long long i = 1; i <= n; i++) {scanf("%d", &a[i]);if (i - a[i] < 0) {cout << -1 << endl;return 0;}}b[n] = a[n];for (long long i = n - 1; i >= 1; i--) b[i] = max(a[i], b[i + 1] - 1);long long ans = 0;for (long long i = 1; i <= n; i++) {if (b[i] != 0 && b[i] != 1)b[i] = b[i - 1] + 1;ans += b[i];}cout << ans << endl;
}int main() {int T; cin >> T;while (T--) Main();return 0;
}

个人反思

考试的思路

在考试的过程中,因为要构造最小的 \(b\) 数组和数据范围,已经想出是用贪心求解,却没有想到要通过 \(b_i = \max(a_i, b_{i + 1} - 1)\) 来转化题目要求。

怎么改正

  1. 多刷偏思维类的题目,并且要灵活变换,有可能正序做也有可能倒序做。

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

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

相关文章

Bilibili音频播放器开发 2025-9-29

🎯 前言我的网易云音乐快过期了(10-2)。📅 大致效果主窗口:下载窗口:歌单窗口:📝 总结与反思整体的实现上依靠的是GPT。 可以考虑一下嵌入式之类的方便嵌入手机进行使用。 发朋友圈没人赞......很尴尬了。其…

防爬虫逆向日志爆炸,精简追踪不崩浏览器控制台 - 详解

防爬虫逆向日志爆炸,精简追踪不崩浏览器控制台 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&q…

网站备案 有效期中小企业网络规划与设计方案

题目描述(力扣题库 84): 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 解题思想: 单调栈: 利用先进后出的思想, 先算出长度更高的柱子所能勾勒…

使用 Jenkins 的流水线方案实施 CI/CD

使用 Jenkins 的流水线方案实施 CI/CDpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mona…

抚松做网站wordpress小程序二开

这几天公司在排查内部数据账号泄漏&#xff0c;原因是发现某些实习生小可爱居然连带着账号、密码将源码私传到GitHub上&#xff0c;导致核心数据外漏&#xff0c;孩子还是没挨过社会毒打&#xff0c;这种事的后果可大可小。说起这个我是比较有感触的&#xff0c;之前我TM被删库…

湘潭网站建设出色磐石网络网站搭建详细教程

泛型&#xff0c;英文是generic。 泛型是一种参数化多态。就是把类型作为参数&#xff0c;使用时才指定具体类型。 这样一套代码可以应用于多种类型。比如Vec<T>&#xff0c;可以是整型向量Vec<i32>&#xff0c;也可以是浮点型向量Vec<f64>。 Rust中的泛型属…

重庆微信网站代理商把数据库wordpress

springboot注解扫描范围是由ComponentScan指定的;默认情况下为启动程序所在目录及其子包; 如果需要指定扫描路径&#xff0c;在启动程序中添加修改 ComponentScan(basePackages{"org.jstudio.a","org.jstudio.b"}) SpringBootApplication public class xxx…

平顶山市城乡建设职工培训网站花生壳官网免费域名申请

目录 一、Linux的哲学思想 1.1 基础知识 1.2 根目录下的文件夹 二、Shell 1、Shell的定义 2、Shell的作用 三、Linux命令行 1、Linux通用命令行使用格式 四、Linux命令的分类 1、内部命令和外部命令的理解 2、内部命令和外部命令的区别 3、命令的执行过程 五、编辑…

网站建设公司上海大连高端网页公司

文章目录 管道相关命令 目标 准备工作 1 cut 1.1 目标 1.2 路径 1.3 实现 2 sort 2.1 目标 2.2 路径 2.3 实现 第一步: 对字符串排序 第二步&#xff1a;去重排序 第三步: 对数值排序 默认按照字符串排序 升序 -n 倒序 -r 第四步: 对成绩排序【按照列排序】 …

婚纱定制网站哪个好如何开始做网站

redis源码剖析&#xff08;十五&#xff09;——客户端执行逻辑结构整理 加载略慢

解析网站怎么做成都网站建设招标

解决办法&#xff1a;安装laptop-mode-tools工具包。1.检查是否安装了grep laptop-mode-tools 工具包$ dpkg -l | grep laptop-mode-tools如果执行命令无结果输出&#xff0c;表示未安装(如果已安装&#xff0c;忽略第2步)2.安装laptop-mode执行命令&#xff1a;$ sudo apt-get…

怎样做网站后台iis做网站文件下载

一、源码特点 java Web火车查询管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql…

南昌模板建站定制个人养老金

生成的符号表达式&#xff0c;可能会存在过于冗长的问题&#xff0c;且多个符号表达式中&#xff0c;有可能存在相同的计算部分&#xff0c;如果不进行处理&#xff0c;计算过程中会导致某些算式计算多次&#xff0c;从而影响计算效率。 那么多个符号表达式生成函数时&#xf…

网站导航内链建设机加工订单网

一.Spring基础 1.Spring 框架是什么 Spring 是一款开源的轻量级 Java 开发框架&#xff0c;我们一般说 Spring 框架指的都是 Spring Framework&#xff0c;它是很多模块的集合&#xff0c;例如&#xff0c;Spring core、Spring JDBC、Spring MVC 等&#xff0c;使用这些模块可…

递增子序列笔记

错题 leetcode 354. 俄罗斯套娃信封问题 错因和思路:1.心态:因为是自己原来做过的题目就掉以轻心了,导致情况没有考虑周全 2.思路:将宽度进行排序,高度没管,如果相同就不改变二分后找到的修改位置,显然这会少答…

MonoDETR(2)

实验结果如下:

记录---window.close()失效 + Chrome浏览器调试线上代码

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣 情况说明主系统单点登录点击触发window.open()打开本系统。 是发布生产后的新需求:要求退出登录后直接关闭当前系统页面。 本地运行增加了window.close()方法实…

启发式合并 [USACO22DEC] Making Friends P

题意 \(N\) 牛 \(M\) 关系,按照编号从小到大,牛依次离开,每一头牛离开时它认识的牛会互相认识,求最后新增了多少朋友关系。 \(N,M\le 2\times 10^5\) 解法 我们将操作看成每个点边集合的合并,尝试使用启发式合并解…

ps企业站网站做多大网站建设功能覆盖范围

Truth Truth 是用于Java测试的断言框架&#xff0c;灵感来自于FEST&#xff0c;并受到一些可扩展性需求的驱动&#xff0c;几乎完全由谷歌员工在业余时间编写&#xff0c;或者作为Java核心图书馆管理员的身份做出贡献。 作用 作为工程师&#xff0c;我们花费大部分的时间来阅…

动易的网站能否静态提供o2o网站建设

#文件防泄密软件# 中科数安是一家专注于信息安全领域的高科技企业&#xff0c;其提供的防止公司内部文件资料及数据外泄的解决方案主要包括图档透明加密和源代码防泄露系统等核心服务。 中科数安 | 图档、源代码防止外泄系统 PC地址&#xff1a; www.weaem.com 1. 图档透明加…