首先要知道每次拿走最小才会达到最优,因为最小的不会给其他的提供任何加分,只有可能减小加分。
删除卡片的次序确定了,剩下的就是确定每段区间的左右端点。
pos[i] 表示数字 i 在初始序列中的位置。
首先枚举i (i = 1 -> n),如果不需删除,则将pos[i]放入set
S中,如果不需删除,则在S中二分查找上下界。
总的时间复杂度为o( (n-k)*log(k) )。
#include
#include
#include
#include
#include
#include
#include
#include
#include