魔力屏障 (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\}\) 表示风向(每轮上下左右),每轮你都会被风向吹走一格 ...
随机推荐
- TCC 分布式事务解决方案
更多内容,前往 IT-BLOG 一.什么是 TCC事务 TCC 是Try.Confirm.Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作:预处理Try.确认Confirm.撤销Canc ...
- IO 流分类
更多内容,前往 IT-BLOG 一.File File 类(磁盘操作)可以用于表示文件和目录的信息,但是它不表示文件的内容.递归地列出一个目录下所有文件: 1 public static void l ...
- 前端ffmpeg实现视频剪切
利用ffmpeg实现纯前端视频剪切 注意:在新版本Chrome浏览器中由于安全性问题,只能在https或localhost当中才能正常使用 1. 下载ffmpeg npm install @ffmpe ...
- ChatGPT推荐最常用的自动化测试、性能、安全测试工具!
ChatGPT是一种当前被广泛关注的人工智能技术,它具备生成自然语言的能力,能够完成一些简单的文本生成.对话交互等任务.ChatGPT 算法的出现,打破了以前自然语言处理的瓶颈,使得机器具备了更加贴合 ...
- Java——多线程(代码)
例子:创建三个窗口卖票,总票数为100张.使用实现Runnable接口的方式 * 1.卖票过程中出现重票.错票 --->出现了线程的安全问题 * 2.问题出现的原因:当某个线程操作车票的 ...
- groovy, Scala和kotlin区别
所谓Scala的目的是什么?事实上Scala作者Martin Odesky他在<Programming in Scala>中写到,Scala的目的是为了更好的融合OO与FP,确实,不是取代 ...
- python文字转语音库及使用方法
作者:陈哲链接:https://www.zhihu.com/question/473797102/answer/2019063801来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...
- [Linux]Xshell连接Centos7能Ping通但无法连接问题[ssh(d)+firewalld/iptables+chkconfig]
一 方案与思路 0 xshell客户端监测是否能够ping通目标服务器. 前提:知晓目标服务器IP地址 Linux: ifconfig -a Windows: ipconfig -a 1 利用fire ...
- RabbitMQ详解(下)
一:序 通过<RabbitMQ详解(上)>一文中,我们可以知道RabbitMQ的一些基本的原生用法,如交换机的创建及消息的投递,但是在企业中我们大部分都是把RabbitMQ集成到Sprin ...
- 深入理解python虚拟机:程序执行的载体——栈帧
深入理解python虚拟机:程序执行的载体--栈帧 栈帧(Stack Frame)是 Python 虚拟机中程序执行的载体之一,也是 Python 中的一种执行上下文.每当 Python 执行一个函数 ...