首页 > 其他分享 >7.6 做题笔记

7.6 做题笔记

时间:2024-07-06 11:55:30浏览次数:6  
标签:ap cdot max sum 笔记 leq 7.6 转移

7.6 做题笔记

笔记、梳理、题解合三为一的产物。

P2569 [SCOI2010] 股票交易

考虑 DP,数据允许开到平方级别。

设 \(f_{i,j}\) 表示第 \(i\) 天持有 \(j\) 张股票的最大钱。

四种转移:

  1. 凭空买入,即本次买入与前面无关。\(f_{i,j}=-ap_i\cdot j\)。

  2. 不买不卖,直接从前些天转移。$f_{i,j}=\max{f_{i,j},f_{i-1,j}} $。

  3. 在前面交易(买或卖)基础上买入,需要满足“两次交易间隔 \(w\) 天”的条件。

    虽然不一定上一次交易就是第 \(i-w-1\) 天,但是由转移 2 得,\(f_{i-w-1,k}\) 已经是前面这些天的最优答案,所以可以从这天转移到今天。

    注意买入的数量不要超过 \(as_i\)。方程为:\(f_{i,j}=\max\{f_{i,j},f_{i-w-1,k}-(j-k)\cdot ap_i\}\; (j-as_i\leq k<j)\)。

  4. 与转移 3 类似,在前基础上卖出。方程为:\(f_{i,j}=\max\{f_{i,j},f_{i-w-1,k}+(k-j)\cdot bp_i\}\; (j<k\leq j+bs_i)\)。

发现转移 3,4 均为立方级别时间复杂度。\(\max\) 转移可以考虑单调队列优化。

根据乘法分配律,转移 3 方程实际为:\(f_{i,j}=\max\{f_{i,j},f_{i-w-1,k}+k\cdot ap_i\}-j\cdot ap_i\)。转移 4 类似,就不写了。区间取最大值的操作,单调队列可完成。

转移时注意顺序与逆序,不要把已更新过的拿来更新其他状态。

「一本通 5.5 例 2」最大连续和

时间只允许线性级别。设 \(f_i\) 为以 \(i\) 结尾的长度不超过 \(m\) 的子串的最大和。

朴素转移:\(f_i=\max_j\{\sum\limits_{k=j}^i a_k\}\;(j>i-m)\)。

预处理前缀和,则 \(f_i=\max_j\{sum_i-sum_{j-1}\}\;(j>i-m)\)。

把 \(sum_i\) 提出来,再把 \(-sum_{j-1}\) 去负号,\(\max\) 也就变成了 \(\min\):\(f_i=sum_i-\min_j\{sum_{j-1}\}\)。

可以用单调队列解决这个 \(\min\)。

P3089 [USACO13NOV] Pogo-Cow

时间允许平方级别。设 \(f_{i,j}\) 表示当前在 \(i\) 点,从 \(j\) 点跳来的最大得分。首先按坐标顺序排序。

立方转移:\(f_{i,j}=\max\{f_{j,k}\}+p_i\;(x_j-x_k\leq x_i-x_j)\)。

这里有一个建立 DP 方程式的 trick:尝试一下把 \(f_{i-1,j}\) 带入 \(f_{i,j}\)。\(f_{i,j}=f_{i-1,j}-p_{i-1}+p_i\)。

注意这里 \(f_{i-1,j}\) 的范围是 \(x_{j}-x_k\leq x_{i-1}-x_j\),但是由于 \(x_i>x_{i-1}\),所以满足 \(f_{i,j}\) 范围的 \(k\) 会比满足 \(f_{i-1,j}\) 范围的 \(k\) 要多。这里简单用 while 拓展一下就好了。

题意是可以一直向左或一直向右,正反做两次 DP 即可。

P2627 [USACO11OPEN] Mowing the Lawn G

只允许线性复杂度。设 \(f_{i,0/1}\) 表示前 \(i\) 头奶牛中 不选/选 这头奶牛。\(f_{i,0}=\max\{f_{i-1,0},f_{i-1,1}\}\),\(f_{i,1}=\max_j\{f_{j,0}+\sum\limits_{k=j+1}^iE_k\}\;(i-K\leq j< i)\)。

预处理前缀和,\(f_{i,1}=\max\{f_{j,0}+sum_i-sum_{j}\}=\max\{f_{j,0}-sum_j\}+sum_i\)。单调队列维护 \(\max\)。

标签:ap,cdot,max,sum,笔记,leq,7.6,转移
From: https://www.cnblogs.com/holmes-wang/p/18287054

相关文章

  • QT笔记:Process库
    QT笔记:Process库说明​ QT带有Process库用以在原有的进程中开一个新的线程或者其他进程来执行其他程序,这个库调用非常简单,这里给出一个创建一个分离进程来执行bat脚本的示例示例#include<QCoreApplication>#include<QProcess>#include<QThread>intmain(intargc,cha......
  • QT笔记:BLE库
    QT笔记:BLE库说明QT自带蓝牙库,但是QT的蓝牙库又有很多坑,这里记录下安装QT蓝牙库​ 和其他模组类似,可以通过QT的维护工具进行添加,跟之前添加串口库类似。不过要注意,蓝牙库并不是独立存在,而是和NFC等组件统一在Connectivity库中。添加时需要检查仔细安装MSVC​ 在添加蓝牙库时......
  • 【Python】原创·基础·学习笔记1
         一、字面量二、变量三、注释四、数据类型1.数据类型的分类2.数据类型的转换3.数据类型查询type()语句五、标识符六、运算符七、字符串的定义  1.字符串的三种定义方式  2.引号的嵌套使用  3.使用转义字符八、字符串拼接九、字符......
  • 树莓派学习笔记18:IIC驱动_PCA9685(16路舵机驱动模块)
    今日继续学习树莓派4B4G:(RaspberryPi,简称RPi或RasPi)本人所用树莓派4B装载的系统与版本如下: 版本可用命令(lsb_release-a)查询:​​ Python版本3.7.3:​​ IIC驱动_PCA9685(16路舵机驱动模块)文章提供测试代码讲解,整体代码贴出、测试效果图目录 开启树......
  • 小红书达人笔记广告投放全攻略
    ......
  • 工作助手VB开发笔记(2)
    今天继续讲功能2.功能2.9开机自启设置程序随windows系统启动,其实就是就是将程序加载到注册表PublicSubStartRunRegHKLM()REMHKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run'DimstrNameAsString=......
  • Arthas进阶-笔记
    《Arthas进阶》学习目标类和类加载器相关的命令monitor/watch/trace/stack等核心命令的使用火焰图的生成Arthas实战案例dump作用将已加载类的字节码文件保存到特定目录:logs/arthas/classdump/参数数名称参数说明class-pattern类名表达式匹配[c:]类所属......
  • 【网工】学习笔记1
    windows:ipconfigens40:和别人通信的网卡lo本地回环和自己通信的网卡ifconfigdown/up进程:运行起来的程序使用浏览器访问网站:http:电脑上的程序和网站上的程序之间的通信。主要用于服务器和客户端之间上传和下载文件一个很好用的写代码的软件......
  • 学习笔记——交通安全分析11
    目录前言当天学习笔记整理4信控交叉口交通安全分析结束语 前言#随着上一轮SPSS学习完成之后,本人又开始了新教材《交通安全分析》的学习#整理过程不易,喜欢UP就点个免费的关注趴#本期内容接上一期10笔记#最近确实太懒了,接受宝子们的批评,以后我会注意哒,虽然每天都有学......
  • 前端学习笔记
    目录一、VScode(一)VScode快捷键二、HTML5与基础骨架三、标签(一)标题(二)段落(三)换行(四)水平线(五)图片(六)超文本链接(七)文本(八)列表标签1、有序列表2、无序列表(九)表格(十)form表单(十一)容器标签四、内联元素和块级元素的区别五、CSS(一)语法:(二)CSS的引入方式:(三)选择器(四)字体属性(五)背景属性一、VScod......