魔力屏障 (magic) 题解
魔力屏障 (magic)
【问题描述】
小 Z 生活在神奇的魔法大陆上。今天他的魔法老师给了它这样一个法阵作为它 的期末考试题目: 法阵由从左至右 n 道魔力屏障组成,每道屏障有一个临界值 a,如果它承受攻 击的魔力值 ≥ a,屏障将会破碎,它所承受的魔力攻击将在魔力值减半后(向下取 整)继续向右移动,否则该攻击会被该屏障完全拦截,停留在屏障前,屏障的临界 值不会减少。当两次攻击相遇时,两次攻击会叠加形成新的攻击,新的攻击的魔力 值为两次攻击魔力值之和,新的攻击会继续向右移动。小 Z 可以在法阵中任意一个 位置释放任意大小魔力值的攻击,攻击会向右移动直到遇到一个还未被摧毁的屏障 或离开法阵。 对于所有 1 ≤ i ≤ n ,小 Z 希望用最小的法力值使得第 1 ∼ i 道屏障全部破碎。
【输入格式】
第一个一个正整数 n 表示屏障的数量。 第二行 n 个正整数,第 i 个数为第 i 道屏障的临界值。
【输出格式】
一行 n 个数,第 i 个表示使第 1 ∼ i 道屏障全部破碎的最小法力值。两个数之 间用一个空格隔开。
【样例 1 输入】
5 10 3 3 8 4
【样例 1 输出】
10 10 11 17 17
【样例 1 解释】
对于 i = 1 ∼ 3,直接从左到右释放攻击使得屏障恰好破碎,例如 i = 3 时依次 在屏障 1 ∼ 3 上释放魔力值为 10, 0, 1 的攻击。对于 i = 4, 5 的方案,先在第 3 道屏 障上释放魔力为 2 的攻击,再在第 2 道屏障上释放魔力为 3 的攻击,此时屏障 2, 3 都已被破碎,屏障 4 上留有魔力值 1 的攻击。此时再在第 1 道屏障上释放魔力为 10 的攻击,在第 4 道屏障上释放魔力为 2 的攻击,第 4, 5 道屏障都被击碎。
【样例 2】
见选手目录下的 magic2.in 与 magic2.ans。 该样例与子任务 2 满足同样的约束条件。
【样例 3】
见选手目录下的 magic3.in 与 magic3.ans。 该样例与子任务 3 满足同样的约束条件。
【样例 4】
见选手目录下的 magic4.in 与 magic4.ans。 该样例与子任务 4 满足同样的约束条件。
【数据规模与约定】
本题开启子任务测试。对于所有数据满足 1 ≤ n ≤ 70, 1 ≤ ai ≤ 150。 子任务编号 分值 n ≤ ai ≤ 子任务依赖 1 30 10 5 无 2 20 20 10 1 3 20 70 2 无 4 30 70 150 2,3
总结:
最开始我想就是区间DP,状态也是 f[i][j][k] 表示打完 i-j 还剩 k 的能量,
但我最开始想法是用前部分的剩余能量的一部分攻击后半部分的能量,但这其实不好处理前半部分剩余能量的一部分。
正解是用前半部分的剩余能量全部留下,和后半部分的一起留下成为一坨新的能量一起留给后面。
当然也有前半部分的剩余能量攻击后半部分的情况,但攻击只会攻击一个屏障,可以特殊判定一下 [i-j] 被分割为 [i-j-1] 和 [j] 两个部分,前部分剩余能量攻击 j ,仔细想想这样可以包含完全部情况
魔力屏障 (magic) 题解的更多相关文章
- NOIP模拟测试30「return·one·magic」
magic 题解 首先原式指数肯定会爆$long$ $long$ 首先根据欧拉定理我们可以将原式换成$N^{\sum\limits_{i=1}^{i<=N} [gcd(i,N)==1] C_{G ...
- CDQ分治题目小结
CDQ分治属于比较特殊的一类分治,许多问题转化为这类分治的时候,时空方面都会有很大节省,而且写起来没有这么麻烦. 这类分治的特殊性在于分治的左右两部分的合并,作用两部分在合并的时候作用是不同的,比如, ...
- CQD(陈丹琦)分治 & 整体二分——专题小结
整体二分和CDQ分治 有一些问题很多时间都坑在斜率和凸壳上了么--感觉斜率和凸壳各种搞不懂-- 整体二分 整体二分的资料好像不是很多,我在网上找到了一篇不错的资料: 整体二分是个很神的东西 ...
- webpack常用配置总结
1. webpack简介 webpack 是一个模块打包工具.它使得模块相互依赖并且可构建等价于这些模块的静态资源.相比于已经存在的模块打包器(module bundler),webpack的开发动机 ...
- 银行爱“IOE”爱得有多深
本文由阿尔法工场欧阳长征推荐 导读:如果银行是一家海鲜酒楼,把IBM换掉相当于大搞一次装修,把Oracle换掉相当于把厨子和菜谱全部换掉,把EMC换掉相当于把放食材工具的储物间换个地方.难度在于,这海 ...
- 巨杉数据库入选Gartner数据库报告,中国首家入选厂商
SequoiaDB巨杉数据库入选Gartner数据库报告,成为国内首批入选Gartner报告的数据库厂商. “SequoiaDB, 总部位于中国广州,是一款分布式.多模型(Multimodel).高可 ...
- Liferay
Liferay是一个开源公司,我们一般谈Liferay是指的Liferay Portal.Liferay Portal始创于2000年的洛杉机,当时是一个非营利性组织.于2004年建立Liferay公 ...
- webpack 功能大全 【环境配置】
1. webpack简介 webpack 是一个模块打包工具.它使得模块相互依赖并且可构建等价于这些模块的静态资源.相比于已经存在的模块打包器(module bundler),webpack的开发动机 ...
- IPython基础使用_Round2
目录 目录 前言 软件环境 Ipython的字符串处理 Ipython的魔力函数Magic lsmagic Output所有魔力函数 查看Magic的源码 env 显示系统环境变量 history 查 ...
- 题解-Magic Ship
Magic Ship 你在 \((x_1,y_1)\),要到点 \((x_2,y_2)\).风向周期为 \(n\),一个字符串 \(s\{n\}\) 表示风向(每轮上下左右),每轮你都会被风向吹走一格 ...
随机推荐
- Nacos 服务发现
更多内容,前往 IT-BLOG 一.Nacos 简介 Nacos 是阿里的一个开源产品,它是针对微服务架构中的服务发现.配置管理.服务治理的综合型解决方案.Nacos 使服务更容易注册,并通过 DNS ...
- php实现微信小程序消息通知
大家好,又见面了,我是你们的朋友全 接入消息通知指引地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/custommsg/callback_help.h ...
- GitHub+Typora实现云笔记一键上传
git实现笔记自动上传功能 简介: 将更新内容自动上传同步git,无需手动提交,解锁一键式同步.流程大致为,创建新仓库,配置公钥和私钥,安装quicker软件,通过quicker上某脚本完成一键提交. ...
- win32api中文在线文档
中文文档http://www.yfvb.com/help/win32sdk/ 英文手册https://www.jb51.net/books/724576.html
- Python多线程与GIL锁
Python多线程与GIL锁 python多线程 Python的多线程编程可以在单个进程内创建多个线程来同时执行多个任务,从而提高程序的效率和性能.Python的多线程实现依赖于操作系统的线程调度器, ...
- 新手小白需要了解的 Go 基础细节杂谈
今日记录一下 学习 golang 这门语言遇到的一些比较特殊的细节,供大家参考. 所以,在我们输出内容的时候,可以包含很多的非 ASCII 码字符.实际上,Go 是天生支持 UTF-8 的,任何字符都 ...
- day02-2-商铺查询缓存
功能02-商铺查询缓存 3.商铺详情缓存查询 3.1什么是缓存? 缓存就是数据交换的缓冲区(称作Cache),是存储数据的临时地方,一般读写性能较高. 缓存的作用: 降低后端负载 提高读写效率,降低响 ...
- Android事件分发-基础原理和场景分析
作者:京东零售 郭旭锋 1 为什么需要事件分发 和其他平台类似,Android 中 View 的布局是一个树形结构,各个 ViewGroup 和 View 是按树形结构嵌套布局的,从而会出现用户触摸的 ...
- 如何解决Gridea部分主题不渲染Katex的问题
很多好看的主题因为对象不是信息学,所以忽视了公式,即 \(\LaTeX\) . 导致,如果你想渲染一个 \(n\) ,结果成了 nn 这个简单,导入文件即可. 找到主题文件夹,打开 templates ...
- vsftpd[9183]: warning: can't get client address: Socket operation on non-socket
今天在linux redhat7.2下执行service vsftpd start一直不能开启vsftpd服务,本来怀疑SELINUX的问题(其他ftp下载问题可以看下我的另外一篇博客Linux下ft ...