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及之后的最优情况