9.12[a]

3414

如何记录区间信息?

如果要字典序最小,那么应当尽可能选少的元素,然后使其覆盖更大的区间和权重

或许应当先考虑权重,然后区间不覆盖是它的限制条件

那么直接想到的思路就是,按权重进行排序,优先选择权重最大的四个,使其满足区间不覆盖

如果这样,依然面对如何保留现有区间的问题,以及如何在区间之间进行取舍

就是说,按右端点排序,然后对于每个元素,有选和不选两种情况,如果要选的话,由于是按右端点排序选的,所以已有的数组当中右端点都不超过当前

dpij是前i个里选j个区间的最好权重和

如果选当前的,那么应当是从j-1转移过来的

然后还要求满足区间不覆盖,所以之前选择的dp该比目前选择的第i个区间的左端点要短

但是dp没保存选择的区间信息,如何知道前面区间的最右端点信息?

就是说,按右端点排序后,往后递归时,前面的区间一定不能超过当前选择区间的左端点,然后由于是按右端点排的,所以具有连续性,所以可以二分搜索,找到第一个不超过的下标p,然后前面就都可以,然后dp是说i区间之前最大的权重,所以就直接是dpp就行

那就是说对于第i个区间,如果选择,那就是在前面找p区间,然后为dppj-1

不选择,那就是dpi-1j

两重循环,最外层是j,从2到4

最里层就是i,从头到尾

初始化就是去选择i前,确定j=1时的最大权重

不过对于数组元素为数组的排序,如何操作?即按右端点来排序?

这样加上一个a.r!=b.r的判断,能够在r相同时,再对l进行排序

但是还有一个问题,dp是能找到权重的最优解,但没保留下标的信息,即最后即使知道了权重和最优是怎样的,但该如何知道其对应的

1872

考虑动态规划,最小子问题是在最右侧

定义dpi为选择到i时,与对手的最大差值

从右侧到左侧生长

对于每个数,如果选择,那么会得到此前所有数的和,对于对手的最优选择就是dpi+1,即分数差为sumi-dpi+1

(这里体现了dp中,每个子问题的求解都是独立的)

?但这里sum是得分,dp并不是得分,而是分差,应该不能直接计算

如果不选择,那么必然要在后面去选,那最大分差就是dpi+1

为什么?

i+1是否包含了后面的所有最优信息

以及sum是说玩家在当前步骤中,对i的选择所造成的得分,但无法确定前面玩家是否已经得过分?即sum是该步骤的得分,而非玩家目前的总分

还是考虑dp的干净定义,即从i开始时,目前玩家与对手所能得到造成的最大分差

dpi 到底表示什么?

在标准解法里,dpi 表示:

从状态 i 开始,轮到当前玩家操作,双方都最优时,当前玩家相对于对手的未来分差。

注意关键词:未来分差。

它不包括之前已经得过的分,因为那些分已经固定,对双方后续的最优决策没有影响。游戏是零和的,后续决策只取决于当前剩下的石子状态。

状态 i 的含义是:

· 前 i 个原始石子已经被合并成了一个新石子,放在最左边;

· 这个新石子的值等于前缀和 Pi-1;

· 剩下的原始石子是 stonesi..n-1。

所以干净定义dp后,i天然就包含了i+1及之后的最优情况

相关推荐
罗湖老棍子7 小时前
【例 1】Sightseeing Trip(信息学奥赛一本通- P1494)(洛谷-P10927)
数据结构·算法·图论·最短路·floyd·最小环
stsdddd9 小时前
YOLO算法建筑工地安全帽目标检测数据集16881张:标注核对笔记
算法·yolo·目标检测
CV爱数码10 小时前
论文精读|Learned Primal-Dual:把原始–对偶算法展开成网络
图像处理·算法·计算机视觉·ct·重建·断层扫描
yuniko-n10 小时前
【算法】约瑟夫环问题
java·算法
l1t11 小时前
测试DuckDB v2.1.0-alpha49002的bignum乘法
数据库·sql·算法·duckdb
Nil20811 小时前
LeetCode 283移动零
数据结构·算法·leetcode
CQU_JIAKE11 小时前
10.18【A】
算法
LMT流氓兔12 小时前
第五单元——第4课:给工具参数加校验
java·前端·算法·ai·langchain
物联网软硬件开发-轨物科技13 小时前
【轨物方案】深度解读开关柜智能感知及一键顺控专家系统
大数据·运维·网络·人工智能·算法·机器人
行者全栈架构师13 小时前
我用 TRAE Work 把桌游之夜搬进了浏览器:一个计分器的从创意到上线
前端·算法·架构