01day1
最大音量
动态规划
题意:给出一个初始值和一个变化序列 c,在第 i 步可以加上或减去 c[i],求 n 步之后能达到的最大值。有一个限定值 maxlevel,在变化过程中值不能超过 maxlevel 也不能低于 0。
初步解法:搜索。每一步两种决策,及时阻止无效状态的搜索。
然后是(来自 lzw 大神的)剪枝:
- 如果当前已经找到的答案达到了 Maxlevel 就直接退出;
- 如果当前值加上后面所有的值也无法超过当前找到的答案就退出;
- 对于重复状态只搜索一次。
从第三步看出来其实是个动规。
正解:
用 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的更多相关文章
- 二模01day1解题报告
T1.音量调节(changingsounds) 有n个物品的背包(有点不一样,每个物品必须取),给出初始价值,物品价值可正可负(就是两种选择嘛),求可能的最大价值,不可能(<0或>maxs ...
随机推荐
- js异步加载 defer和async 比较
网上说法很多,很少一句话能总结清楚的,终于找到两句一针见血的描述,很到位: 相同点:都不阻塞DOM解析 defer :顺序:保证先后顺序.解析:HTML 解析器遇到它们时,不阻塞(脚本将被异步下载) ...
- BZOJ 4302 Buildings 解题报告
这个题好像很有趣的样子. 题目分析: 房间都是 $1\times k$ 的,也就是一条一条的.这个好像比较显然的样子. 一个房间如果要覆盖某个格子$u$,那么这个房间的面积至少为 $dis(u, Bo ...
- powerdesigner使用之——从“概念模型”到“物理模型”
现实问题在计算机上的解决,需要我们从现实问题中抽象出实体模型,然后再将实体模型对应到数据库关系表中. 例如,我们在思考学生选课,这件事情上,实体模型就是“学生”和“课程”两个 此时,我们使用power ...
- 【系统Configmachine.config与自己的应用程序的App.config/Web.Config配置节点重复】解决方法
自己的应用程序的App.config或Web.Config文件中与系统的C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Configmachine.co ...
- 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 ...
- hadoop聚群的安装
第一部分,安装单机hadoop 1,安装ssh sudo apt-get install ssh 注意:如果执行不了这句,那就先执行:sudo apt-get update 2,安装rsync sud ...
- C#和Javascript中 正则表达式使用的总结
说明:本文并非原创,而是从网站上搜集了一些资料整理的!如有雷同,纯属巧合 1.js中正则表达式的使用 在js中定义正则表达式很简单,有两种方式,一种是通过构造函数,一种是通过//,也就是两个斜杠.例如 ...
- 用 Xamarin for VS 创建 aar 文件的绑定
预备工作:相关aar文件,Xamarin for VS一份.我这里以Android中挺火的 MaterialDesignLibrary 为例. 1.首先,创建一个Xamarin Binding Lib ...
- 通过快捷键及cmd命令注销系统
公司的外网内网是隔离的 外网的远程电脑屏幕一半卡那了,页面注销键正好在卡死的那一半屏幕上,用以下简单方法注销远程重新连接,问题解决了. 1.通过快捷键win+r打开“运行...” 2.输入CMD 回车 ...
- 使用load()方法异步请求数据
使用load()方法通过Ajax请求加载服务器中的数据,并把返回的数据放置到指定的元素中,它的调用格式为: load(url,[data],[callback]) 参数url为加载服务器地址,可选项d ...