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]);
		else
			last[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.mfbz.cn/a/746267.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

项目验收测试有必要找第三方软件测试机构吗?

在当今信息技术飞速发展的时代&#xff0c;软件测试成为了确保软件质量的重要环节。而在项目的验收测试中&#xff0c;很多企业都面临一个问题&#xff0c;那就是是否有必要找第三方软件测试机构进行验收测试?今天&#xff0c;我们就来探讨一下这个问题。 第三方软件测试机构…

python中的nan是什么意思

NaN&#xff08;not a number&#xff09;&#xff0c;在数学表示上表示一个无法表示的数&#xff0c;这里一般还会有另一个表述inf&#xff0c;inf和nan的不同在于&#xff0c;inf是一个超过浮点表示范围的浮点数&#xff08;其本质仍然是一个数&#xff0c;只是他无穷大&…

如何制作自己的网站

制作自己的网站可以帮助个人或组织在互联网上展示自己的品牌、作品、产品或服务。随着技术的发展&#xff0c;现在制作网站变得越来越简单。下面是一个简单的步骤指南&#xff0c;帮助你制作自己的网站。 1. 确定你的网站需求和目标 在开始之前&#xff0c;你需要明确你的网站的…

左右旋分辨

从端头看&#xff0c;切削路径顺时针是右旋&#xff0c;反时针左旋。

【JVM-1】JVM内存结构

目录 什么是JVMJava源码执行机制class文件的组成部分 JVM跨平台原理JVM的组成堆年轻代与老年代对象分配过程GC类型Full GC触发条件&#xff1a;对象进入老年代的触发条件 对象分配过程&#xff1a; 字符串常量池静态变量线程本地分配缓冲区&#xff08;TLAB&#xff09;TLAB相关…

SpringBoot前后端传递数据时常用的JSON格式数据是什么?【讲解JSON概念、语法、以及Java对象互转】

SpringBoot前后端传递数据时常用的JSON格式数据是什么&#xff1f; JSON概念JSON语法JSON的两种结构&#xff1a;JSON字符串和Java对象互转&#xff1a;objectMapper.writeValueAsString(person);objectMapper.readValue(jsonStr,Person.class); 在SpringMVC框架中&#xff0c;…

【GitOps】使用Google工具JIB实现本地无需安装容器推送镜像,加速SpringCloud项目开发

文章目录 一、效果展示二、简介三、安装Jib插件1、区分环境2、安装插件一、效果展示 本地是window系统,无docker环境,没有任何runtime,使用jib工具打包镜像并推送完成,用时20秒 二、简介 Jib 是 Google 开发的一款开源工具,旨在帮助 Java 开发者更高效地将 Java 应用程…

ZNB40 矢量网络分析仪

ZNB40 矢量网络分析仪 100kHz至40GHz的宽频率范围&#xff0c;具有四个端口和附加信号发生器 概述 R&SZNB40 提供 100 kHz 至 40 GHz 的宽频率范围&#xff0c;具有四个端口和附加信号发生器。 罗德与施瓦茨带四个端口和附加内部信号源的 40 GHz 中档矢量网络分析仪&…

Ubuntu20.04安装python2和python3及版本配置

Ubuntu20.04安装python2和python3及版本配置_ubuntu 20.04 python3-CSDN博客https://blog.csdn.net/pangc2014/article/details/117407413 >>>ubuntu 安装源码python2_mob649e8161c39d的技术博客_51CTO博客https://blog.51cto.com/u_16175489/7327966

【Academy】测试WebSockets安全漏洞Testing for WebSockets security vulnerabilities

测试WebSockets安全漏洞Testing for WebSockets security vulnerabilities 概述WebSockets是什么?HTTP和WebSockets有什么区别&#xff1f;如何建立WebSocket连接&#xff1f;WebSocket消息看起来像什么&#xff1f; 操纵WebSocket流量拦截和修改WebSocket消息重放和生成新的W…

ONLYOFFICE 8.1:引领桌面办公新潮流,功能升级全面提升

目录 一、ONLYOFFICE是什么&#xff1f; 二、功能完善的PDF编辑器 三、幻灯片版式升级 四、改进从右至左显示 五、新的本地化选项 六、多媒体功能增强 七、应用价值探讨 一、ONLYOFFICE是什么&#xff1f; ONLYOFFICE 是一款功能强大的办公套件&#xff0c;旨在提供全面…

什么是云服务器镜像,如何选择?

云服务器镜像是一种用于业务连续性、灾难恢复和备份的技术手段&#xff0c;其本质是云端创建的服务器数据副本。 这些镜像内容可以涵盖系统、光盘、软件、网站甚至整个服务器&#xff0c;主要用于创建容错和冗余服务器计算基础架构&#xff0c;为用户提供了一个方便且可靠的解…

YOLOv8改进 | 注意力机制 | 轻量级的空间组增强模块SGE【全网独家】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录&#xff1a;《YOLOv8改进有效涨…

python项目运营时,出现,redis用户密码未设置问题,排查解决

一、问题描述&#xff1a; 在本地化开发过程中&#xff0c;pythonDjango运行项目&#xff0c;redis为本地windows版本&#xff0c;在设置过密码后&#xff0c;仍然会出现pythonDjango运行项目&#xff0c;终端日志显示如下&#xff1a; INFO info信息 ERROR redis数据库异常[&…

内网安全【4】SSH隧道技术

1.四大隧道协议 (1)SMB协议 判断&#xff1a;445端口是否开放 (2)ICMP协议 判断&#xff1a;ping命令能通说明使用icmp协议 (3)DNS协议 判断&#xff1a;nslookup www.baidu.com 属于UDP iodine工作原理是 &#xff0c;通过TAP虚拟网卡&#xff0c;在服…

大厂面试经验分享,小白如何在面试中脱颖而出

前言 毕业季&#xff0c;对于每一位即将步入社会的学子来说&#xff0c;都是一个充满挑战和机遇的时刻。作为我的一位好朋友也是好学长&#xff0c;他刚刚在一家顶尖科技公司斩获了他梦寐以求的职位。他深知求职路上的艰辛&#xff0c;因此打算把自己的经验分享给大家&#xf…

一键掌握多渠道推广效果!Xinstall超级渠道功能,让你的App推广更高效

在App运营的大潮中&#xff0c;如何高效、精准地推广App&#xff0c;成为每一位运营者关注的焦点。传统的推广方式&#xff0c;如地推、代理、分销、广告等&#xff0c;虽然能够带来一定的用户增长&#xff0c;但如何衡量推广效果、如何与合作伙伴结算、如何管理下属渠道等问题…

Java程序递归及mybatis递归查询

之前项目组有个需求&#xff0c;定时同步机构的信息。已知三方接口由于返回数据量很大&#xff0c;所以最后需要三方提供一个可根据机构编号获取当前机构及子机构信息的接口。而不是一次性返回全部机构信息&#xff01; 由于这次需求也用到了递归&#xff0c;所以记录下&#…

2024.6.26 刷题总结

2024.6.26 **每日一题** 526.优美的排列&#xff0c;该题考察的是状压dp的知识&#xff0c;用一个n位的二进制数表示排列中的数被选取的情况&#xff0c;若为1&#xff0c;则表示该位被选取&#xff0c;若为0&#xff0c;则表示该位没有被选取&#xff0c;用一个数组来存储当前…

【Vue】集成富文本编辑器

这文章使用的是wangeditor插件&#xff0c;官网地址&#xff1a;wangEditor&#xff0c;这个比较简单 安装 npm i wangeditor --save 使用 <div id"editor"></div>import E from "wangeditor"const editor new E("#editor") e…