题解:
A. 假设所有物品都小于(lceildfrac W2
ceil),只要它们的和大于或等于(lceildfrac W2
ceil),那么以任意一种顺序贪心都合法.
B. 类似LCS的DP,只不过转移收益从(0)和(1)变成(-1)和(2).
C. 把所有点放到trie树上,结论:对于每个非叶子结点,如果有两个儿子,左右子树至少有一个是链.证明:否则两边会各自连边从而不形成树.
D. 记原来出现最多的数为(x).结论:最优解区间(x)出现次数最多.
证明:如果存在(y)比(x)多,那么对这个区间以任意顺序向两边扩展,那么(y)出现次数和(x)出现次数的差每次变化(pm1),并且最终(x)出现次数会超过(y),因此一定在某个时刻(x)和(y)数量相等.
类似地推广:考虑每个区间,只要存在(y)出现次数不小于(x)出现次数,那么答案一定不会小于该区间长度.
D1. 对每个(y)考虑区间([L,R]),记(s_{i,x})为前(i)个数出现(x)的次数,实际上就是找(s_{R,y}-s_{R,x}=s_{L-1,y}-s_{L-1,x}).
D2. 对出现次数超过根号次的区间进行上面的做法,然后对(k=1,cdots,sqrt n),枚举所有恰好包含(k)个(x)的极大区间.
注意,需要保证其他操作,如维护每个数出现次数以及维护最多出现次数等等操作都是(O(1))的.