最大音量

动态规划

题意:给出一个初始值和一个变化序列 c,在第 i 步可以加上或减去 c[i],求 n 步之后能达到的最大值。有一个限定值 maxlevel,在变化过程中值不能超过 maxlevel 也不能低于 0。

初步解法:搜索。每一步两种决策,及时阻止无效状态的搜索。

然后是(来自 lzw 大神的)剪枝:

  1. 如果当前已经找到的答案达到了 Maxlevel 就直接退出;
  2. 如果当前值加上后面所有的值也无法超过当前找到的答案就退出;
  3. 对于重复状态只搜索一次。

从第三步看出来其实是个动规。

正解:

用 f(i, j) 表示第 i 步能否达到值 j,则

f(i, j) = f(i-1, j-c[i-1]) or f(i-1, j+c[i-1])

旅行

不知道什么类型

题意:一个矩形区域中分为空地和障碍,每行每列最多一个障碍且在对角线方向上障碍不会相邻。求所有任意两点的最短距离的平均值。行列数小于 1000。

初步解法:暴力。本来想对于每个点统计从其出发的长度为 x 的路径条数,后来发现无法解决重复计算的问题。

正解:

首先不考虑障碍。在没有障碍的情况下,任意两点之间的最短距离很明显就是曼哈顿距离,那么答案就是sum{ |xi-xj|+|yi-yj| }。但是枚举每个点的复杂度是四次方。

然后我们发现,对于任意两行 i 和 j,在两行中各选一个空地,则其 x 的差值必然等于 |i-j|。所以我们可以分开计算 x 的差值和 y 的差值。那么对于 i 和 j,x 的差值的和为 (第 i 行空地数*第 j 行空地数)*(|i-j|)*2。对于 y 的统计类似。

加入障碍后其实并没有太大的变化,只是对于某些点之间的最短路径长度不再等于曼哈顿距离,而是曼哈顿距离+2。

关于为什么是曼哈顿距离+2,其实要得益于题目中对障碍点的限制。这样可以保证任何点对之间相互到达不需要绕行多次,自己画图就能知道。

那么什么样的点对之间的最短距离需要 +2?贴上 NOI 导刊上的图:

这样的规律具体概括起来如下:

首先,考虑竖直方向上。对于一个障碍点,从它的下方到它的上方必然需要绕行。如果它的右边一列也有障碍点且在本障碍点的上方,那么从本障碍点的下方到右边这一列的障碍点上方显然也需要绕行,然后再往右找有没有连续的且高度不断递增的障碍点,要到达这些障碍点的上方都需要绕行。对于障碍点的左边做类似考虑。然后横向上也类似。

统计出有多少点对需要 +2后计入总答案即可。

舞蹈课

题意:在一个队列中,每次找出相邻且舞蹈技术相差最小的异性,将其出列,出列后再次连成队列,不断重复此过程。人数少于 200000。

初步解法:模拟。0 分。

正解:

其实看到「每次选最小值」就应该用堆的。

我们把所有相邻的异性入堆,每次考虑栈顶元素。如果栈顶的两人有一人已经出列就直接将其弹出;否则将其从双向链表中删除,标记为已出列并计入答案,然后判断是否产生了新的异性舞伴,如果有就入堆。重复上述过程直到堆为空。

01day1的更多相关文章

  1. 二模01day1解题报告

    T1.音量调节(changingsounds) 有n个物品的背包(有点不一样,每个物品必须取),给出初始价值,物品价值可正可负(就是两种选择嘛),求可能的最大价值,不可能(<0或>maxs ...

随机推荐

  1. js异步加载 defer和async 比较

    网上说法很多,很少一句话能总结清楚的,终于找到两句一针见血的描述,很到位: 相同点:都不阻塞DOM解析 defer  :顺序:保证先后顺序.解析:HTML 解析器遇到它们时,不阻塞(脚本将被异步下载) ...

  2. BZOJ 4302 Buildings 解题报告

    这个题好像很有趣的样子. 题目分析: 房间都是 $1\times k$ 的,也就是一条一条的.这个好像比较显然的样子. 一个房间如果要覆盖某个格子$u$,那么这个房间的面积至少为 $dis(u, Bo ...

  3. powerdesigner使用之——从“概念模型”到“物理模型”

    现实问题在计算机上的解决,需要我们从现实问题中抽象出实体模型,然后再将实体模型对应到数据库关系表中. 例如,我们在思考学生选课,这件事情上,实体模型就是“学生”和“课程”两个 此时,我们使用power ...

  4. 【系统Configmachine.config与自己的应用程序的App.config/Web.Config配置节点重复】解决方法

    自己的应用程序的App.config或Web.Config文件中与系统的C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Configmachine.co ...

  5. How to Enable 64-bit Processes for Enhanced Protected Mode in Internet Explorer 11 (IE11)

       Information Enhanced Protected Mode (EPM) adds additional security to Protected Mode and includes ...

  6. hadoop聚群的安装

    第一部分,安装单机hadoop 1,安装ssh sudo apt-get install ssh 注意:如果执行不了这句,那就先执行:sudo apt-get update 2,安装rsync sud ...

  7. C#和Javascript中 正则表达式使用的总结

    说明:本文并非原创,而是从网站上搜集了一些资料整理的!如有雷同,纯属巧合 1.js中正则表达式的使用 在js中定义正则表达式很简单,有两种方式,一种是通过构造函数,一种是通过//,也就是两个斜杠.例如 ...

  8. 用 Xamarin for VS 创建 aar 文件的绑定

    预备工作:相关aar文件,Xamarin for VS一份.我这里以Android中挺火的 MaterialDesignLibrary 为例. 1.首先,创建一个Xamarin Binding Lib ...

  9. 通过快捷键及cmd命令注销系统

    公司的外网内网是隔离的 外网的远程电脑屏幕一半卡那了,页面注销键正好在卡死的那一半屏幕上,用以下简单方法注销远程重新连接,问题解决了. 1.通过快捷键win+r打开“运行...” 2.输入CMD 回车 ...

  10. 使用load()方法异步请求数据

    使用load()方法通过Ajax请求加载服务器中的数据,并把返回的数据放置到指定的元素中,它的调用格式为: load(url,[data],[callback]) 参数url为加载服务器地址,可选项d ...