一、
1. 二分时间间隔T,时间复杂度log(M);
2. 对于每个二分得到的时间间隔T,计算是否击破所有护盾。这里最差复杂度O(N),由于护盾数K很少,并且护盾防护值相同,因此可以很大程度优化,没有再细想。
3. 根据上述结果更新二分区间
总时间复杂度O(N*log(M)),而且很大可能很大程度优化,没继续想
二、
1. 对强力值公式进行对数取值,可以将乘积变为和的形式,从而公式被分离成K项
2. 由于每一项都是log函数,倒数1/x,即其递增趋势越来越缓,因此直接可以对每颗药丸进行贪心,取K项中增加最大的那个属性喂食。 这里可以建个最大堆,从而时间复杂度log(K)。
3. 有N颗药丸,总时间复杂度O(N*log(K))
由于公式分离后,为K项带系数的log相加的形式。或许不需要对N颗药丸一一计算,可能直接得到最优分配方法,但暂没得到推导结果。
由于初始属性值较小,或许可以先大致初始一个粗略的分配方式,然后根据该分配方式的K项的导数大小进行调整,优化得到最优结果。(复杂度似乎是对数级别?但并未继续想下去)
四、
(用)
1. 首先假设得到一个面积最大的凸多边形,则可以推导出必然每个顶点在原多边形边界上(否则可以构造更优多边形,从而与假设矛盾)。
2. 类似的进一步得到每个点必须为顶点。
3. F(m,n)到当前点,已经切割多少顶点,当前距离最近点切割多少定点。然后动规
其实还有一些约束,比如得到的连续3个点,中间那个点,必须是距离另两个点的直线最远的 两顶点间的点。