11.3
放假回来,晚上考的,困。
T1想了个分块的思路,打了1h发现伪了。然后写线段树,写了1h发现也是伪的,最后交暴力了。听了听线段树维护单调栈,发现以前之所以不能理解cal函数,是因为对于维护单调栈有点误解,其实是算贡献,不是真的栈,左儿子只受到传入参量的影响,右儿子要么依旧受到左儿子控制,要么受到传入参量控制,依旧受到控制可以直接用sum[p]-sum[p<<1],取决于pushup的sum[p]=sum[p<<1]+cal(p<<1)。当然可以维护一个额外参量。
T2直接就输出-1了。由于原料没有限制,每天做电脑的最小原料钱是可以直接单变量干出来的。然后用权值线段树开一个仓库,先把所有的电脑认为是在第一天做的存进去,然后取出的时候再加上存电脑的钱,动态的删除已选元素,删除多余的元素,贪心的取最小,删最大。-1随便特判一下。
T3打了30Dfs,然后挂上了一个基于反悔堆的贪心,没有多分。按照A小到大排序,两两分组,选取其中B比较大的,这样B必然满足,A的最坏情况是全都是小的,然而在选择集合不变的基础上,将分组向右平移,则达成两两分组选择的A较大。所以必然有解。
附录: 随行的数据生成器,插件和飚程。