(FJWC2020)DTOJ 4681. 楼房搭建

2024-03-08 23:32
文章标签 搭建 楼房 dtoj fjwc2020 4681

本文主要是介绍(FJWC2020)DTOJ 4681. 楼房搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题意

小 H 是一个建筑师,他接到了一个任务——按照计划图搭建一排楼房。计划图上从左到右

给出了 n n n 个非负整数,对于第 i i i 个数 h i h_i hi ,它表示在 i i i 这个位置搭建出来的楼房的高度不能小于 h i h_i hi

小 H 搭建楼房的方式也很特别。在每一时刻,它总可以让相邻的两个楼房分别增高 1 1 1 个单位和增高 2 2 2 个单位。

具体地,对于任意的 i ( 1 ≤ i < n ) i(1 \le i < n) i(1i<n),每一时刻他可以有以下两种搭建的方法:

  • i i i 位置上的楼房的高度 + 2 +2 +2,同时让 i + 1 i + 1 i+1 位置上的楼房 + 1 +1 +1

  • i i i 位置上的楼房的高度 + 1 +1 +1,同时让 i + 1 i + 1 i+1 位置上的楼房 + 2 +2 +2

小 H 想知道最快需要多少时间,搭建出来的这一排楼房才能满足计划图的要求?
n , h [ i ] ≤ 1000000 n,h[i]\le 1000000 n,h[i]1000000

题解

考场上只会 O ( n 3 ) O(n^3) O(n3)的暴力DP,然后减个枝就立方过一千了 。(FJ怎么回事,连续两天立方过平方的分,削减选手往下想的积极性)
这是道神仙贪心题。
原本想过可撤销的贪心,但没想到能这么撤销。
为了方便,转化为原本有高度h,将其铲平。
显然考虑前 i − 1 i-1 i1个已经铲平,现在要把第 i i i个铲平。目前的最优解就是把 i i i 2 2 2 i + 1 i+1 i+1 1 1 1,直到若 h [ i ] = 1 h[i]=1 h[i]=1,则把 i i i 1 1 1 i + 1 i+1 i+1 2 2 2(设这样的操作为 A i Ai Ai)。显然这对于之后可能更劣,于是考虑撤销:在 i + 1 i+1 i+1时,把 A i A_i Ai变个形态,使它在 i + 1 i+1 i+1上更优,而它在 i i i上的作用不变:加上一个操作,变为两个把 i i i减1, i + 1 i+1 i+1减2,这样等于耗费1的代价使 h [ i + 1 ] h[i+1] h[i+1]减少3(设为 B i + 1 B_i+1 Bi+1)。
现在的目的是考虑到每一个 i i i时,先用尽量小的代价铲平 h [ i ] h[i] h[i]。对于一个 B i B_i Bi,发现它可以通过1的代价转到一个 B i + 1 B_i+1 Bi+1,或者通过2的代价转到两个 B i + 1 B_i+1 Bi+1。于是先做 A , B A,B A,B的转移(即撤销),再按照一开始的贪心即可。

这篇关于(FJWC2020)DTOJ 4681. 楼房搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/788778

相关文章

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

JavaFX环境的搭建和一个简单的例子

之前在网上搜了很多与javaFX相关的资料,都说要在Eclepse上要安装sdk插件什么的,反正就是乱七八糟的一大片,最后还是没搞成功,所以我在这里写下我搭建javaFX成功的环境给大家做一个参考吧。希望能帮助到你们! 1.首先要保证你的jdk版本能够支持JavaFX的开发,jdk-7u25版本以上的都能支持,最好安装jdk8吧,因为jdk8对支持JavaFX有新的特性了,比如:3D等;

springboot+maven搭建的项目,集成单元测试

springboot+maven搭建的项目,集成单元测试 1.在pom.xml文件中引入单元测试的依赖包 <!--单元测试依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></depen

CentOS 7 SVN的搭建和使用

https://subversion.apache.org/packages.html#centos 阿里云的ECS貌似已经自带了SVN [root@xxx ~]# svn --versionsvn, version 1.7.14 (r1542130)compiled Aug 23 2017, 20:43:38Copyright (C) 2013 The Apache Software Fo

2021-08-14 react笔记-1 安装、环境搭建、创建项目

1、环境 1、安装nodejs 2.安装react脚手架工具 //  cnpm install -g create-react-app 全局安装 2、创建项目 create-react-app [项目名称] 3、运行项目 npm strat  //cd到项目文件夹    进入这个页面  代表运行成功  4、打包 npm run build

搭建H1veCTF平台

An Easy / Quick / Cheap Integrated Platform H1ve是一款自研CTF平台,同时具备解题、攻防对抗模式。其中,解题赛部分对Web和Pwn题型,支持独立题目容器及动态Flag防作弊。攻防对抗赛部分支持AWD一键部署,并配备炫酷地可视化战况界面。 项目地址:https://github.com/D0g3-Lab/H1ve 更多请打开。。。

day45-测试平台搭建之前端vue学习-基础4

目录 一、生命周期         1.1.概念         1.2.常用的生命周期钩子         1.3.关于销毁Vue实例         1.4.原理​编辑         1.5.代码 二、非单文件组件         2.1.组件         2.2.使用组件的三大步骤         2.3.注意点         2.4.关于VueComponen

Ubuntu下搭建基于apache2的gerrit+gitweb服务器

说明:Ubuntu版本12.04   1. 配置gerrit管理帐号 1 sudo adduser gerrit   增加sudo权限: 1 sudo usermod -a -G sudo gerrit   切换到gerrit账号: 1 sudo su gerrit     2. 安装java 1 2