Atcoder ABC359E Water Tank 题解

题目传送门

题解

分析

分类讨论。

记第 i i i 个答案为 a n s i + 1 ans_i+1 ansi+1

  1. i i i 个数就是目前的最大值。
    显然, a n s i = h i × i ans_i=h_i \times i ansi=hi×i
  2. i i i 个数就是目前的最大值。
    l a s t i last_i lasti i i i 前面,从后往前数第一个比 h i h_i hi 大的 j j j
    所以,填满第 l a s t i last_i lasti 个前面的答案为 a n s j ans_j ansj
    而第 l a s t i + 1 last_i+1 lasti+1 i − 1 i-1 i1,显然要用 [ ( i − 1 ) − ( l a s t i + 1 ) + 1 ] × h i = ( i − l a s t i − 1 ) × h i [(i - 1) - (last_i + 1) + 1] \times h_i=(i-last_i-1) \times h_i [(i1)(lasti+1)+1]×hi=(ilasti1)×hi 个格子才能填满。
    所以,这时的 a n s i = ( i − l a s t i − 1 ) × h i ans_i=(i-last_i-1) \times h_i ansi=(ilasti1)×hi

最后的答案输出: a n s i + 1 ans_i+1 ansi+1

完成!

Code

#include <bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
const int N = 2e5 + 10;
int n,a[N],maxn[N],ans[N],last[N];
int F(int x,int y)
{if(a[x] >= y)	return x;if(x == last[x])	return x;return F(last[x],y);
}
signed main()
{ios::sync_with_stdio(false);cin.tie(0);//freopen(".in","r",stdin);//freopen(".out","w",stdout);cin >> n;for(int i = 1;i <= n;i++){cin >> a[i];maxn[i] = max(maxn[i - 1],a[i]);if(a[i] == maxn[i])last[i] = i;else if(a[i] > a[i - 1])last[i] = F(i - 1,a[i]);elselast[i] = i - 1;}for(int i = 1;i <= n;i++){if(a[i] == maxn[i]){cout << ((ans[i] = a[i] * i) + 1) << " ";}else{ans[i] = ans[last[i]] + a[i] * (i - last[i]);cout << ans[i] + 1 << " ";}}return 0;
}

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

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

相关文章

网络安全学习路线图(2024版详解)

近期&#xff0c;大家在网上对于网络安全讨论比较多&#xff0c;想要学习的人也不少&#xff0c;但是需要学习哪些内容&#xff0c;按照什么顺序去学习呢&#xff1f;其实我们已经出国多版本的网络安全学习路线图&#xff0c;一直以来效果也比较不错&#xff0c;本次我们针对市…

Java中多态的实现原理解析

Java中多态的实现原理解析 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在本文中&#xff0c;我们将深入探讨Java中多态的实现原理及其应用。多态是面向对象编…

centos中查看服务的日志

在CentOS中查看服务的日志通常涉及查看系统日志文件&#xff0c;这些文件通常位于/var/log/目录下。不同的服务可能会有不同的日志文件。以下是一些常见的日志文件和查看它们的方法&#xff1a; 1. **系统日志**&#xff1a;系统日志通常存储在/var/log/messages或/var/log/sy…

学会python——生成日志信息(python实例十二)

目录 1、认识Python 2、环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3、生成日志信息 3.1 代码构思 3.2 代码示例 3.3 运行结果 4、总结 1、认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的…

MySQL serverTimezone=UTC

在数据库连接字符串中使用 serverTimezoneUTC 是一个常见的配置选项&#xff0c;特别是当数据库服务器和应用程序服务器位于不同的时区时。这个选项指定了数据库服务器应当使用的时区&#xff0c;以确保日期和时间数据在客户端和服务器之间正确传输和处理。 UTC&#xff08;协…

Vue-双向数据绑定指令

v-model指令 双向数据绑定就是当数据设置给表单元素时&#xff0c;修改这个数据会修改表单元素的值&#xff0c; 修改表单元素的值同样也会修改这个数据 <body><div id"app"><input type"text" v-model"name"><p>{{name…

利用 Swifter 加速 Pandas 操作的详细教程

利用 Swifter 加速 Pandas 操作的详细教程 引言 Pandas 是数据分析中常用的库&#xff0c;但在处理大型数据集时效率可能会较低。Swifter 提供了一种简便的方法&#xff0c;通过并行处理来显著加速 Pandas 操作。 Swifter 简介 Swifter 是一个开源库&#xff0c;旨在自动优…

一个项目学习Vue3---创建一个 Vue 应用

步骤1&#xff1a;安装符合要求的node版本 目前官网要求使用的node.js版本为18.3及其以上 所以我们要安装node.js 18.3及其以上版本 NVM安装教程&#xff1a;一个项目学习Vue3---NVM和NPM安装-CSDN博客 若不想安装NVM&#xff0c;可以直接下载适合自己的node版本Node.js — …

Go 延迟调用 defer

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

硬件实用技巧:电阻精度和常用阻值表

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/139986658 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

Linux Vim最全面的教程

Vim编辑器概述 Vim是一款功能强大的文本编辑器&#xff0c;广泛应用于Linux和Unix系统中。它是Vi编辑器的增强版&#xff0c;提供了更多的功能和更好的用户界面。Vim的特点包括多模式编辑、高度可配置性、丰富的插件生态系统以及强大的文本处理能力。 Vim的基本操作 Vim的基…

C++ 20新特性之模块

&#x1f4a1; 如果想阅读最新的文章&#xff0c;或者有技术问题需要交流和沟通&#xff0c;可搜索并关注微信公众号“希望睿智”。 为什么要引入模块 在C 20之前&#xff0c;所有的代码组织都依赖于预处理器和头文件。这种方式主要存在以下四个问题&#xff1a;一是大型项目中…

来了,你的第一个AI智能体

为了能直观的感受AI智能体&#xff0c;最好的方法是亲手开发一个智能体&#xff0c;当然&#xff0c;这个智能体不能太复杂&#xff0c;否则难度太大&#xff0c;会打击我们的热情的&#xff0c;热情是很宝贵的资源&#xff0c;必须要小心呵护。 我们在国内AI平台语聚AI上搭建…

Batch入门教程

Batch学习在多个领域有不同的应用&#xff0c;但最常见的是在机器学习和教育学习领域。以下是一个关于Batch学习入门的清晰指南&#xff0c;将分别介绍这两个领域中的Batch学习概念、方法和一些实用信息。 1. 机器学习中的Batch学习 定义与概念 Batch_Size&#xff1a;在机器…

RK3588 Android13 TvSetting 中增加 WebView 切换菜单

前言 电视产品,客户要求在设置中设备偏好设置子菜单下增加一个 WebView切换菜单,一开始不知道怎么下手,后来想起来在设置开发者选项里有一个类似的菜单, 去把实现逻辑搞出来应该就ok。 效果图 TvSetting 部分修改文件清单 packages/apps/TvSettings/Settings/res/values…

【吊打面试官系列-Mysql面试题】为表中得字段选择合适得数据类型

大家好&#xff0c;我是锋哥。今天分享关于 【为表中得字段选择合适得数据类型】面试题&#xff0c;希望对大家有帮助&#xff1b; 为表中得字段选择合适得数据类型 字段类型优先级: 整形>date,time>enum,char>varchar>blob,text 优先考虑数字类型&#xff0c;其次…

npm-check【实用教程】升级项目中的依赖

安装 npm-check npm i -g npm-check检查项目中的依赖 npm-check会显示项目中没有使用&#xff0c;以及有新版本的依赖 升级项目中的依赖 npm-check -u方向键上下可以移动图中左侧的箭头空格键可选中/取消选中标注为 Major Update 和 Non-semver 类的版本&#xff0c;需去官网查…

Python课程设计:python制作俄罗斯方块小游戏

基于python的俄罗斯方块小游戏 目录 基于python的俄罗斯方块小游戏 1.概述 1.1 摘要 1.2 开发背景 1.3 开发环境 1.4 实现功能 2.代码描述 2.1 模块导入 2.2 初始化变量 2.3 播放音乐 2.4 创建方块类 2.5 绘制游戏地图 2.6 游戏初始化 2.7 绘制有边框矩形 2.8 …

Curator框架的底层原理

Curator框架的底层原理主要围绕以下几个核心方面&#xff1a; 1. **异步操作**&#xff1a;Curator框架通过异步操作来提高性能和可扩展性。它使用Future、Callback或Watcher模式&#xff0c;允许在适当的时机返回结果或通知应用程序状态的变化。 2. **错误处理**&#xff1a…

【小沐学AI】Python实现语音识别(Whisper-Web)

文章目录 1、简介2、下载2.1 openai-whisper2.2 whisper-web 结语 1、简介 https://openai.com/index/whisper/ Whisper 是一种自动语音识别 &#xff08;ASR&#xff09; 系统&#xff0c;经过 680,000 小时的多语言和多任务监督数据的训练&#xff0c;从网络上收集。我们表…