T1暴力打满,距离正解差一个优先队列,T2想到暴力后犹豫了一会复杂度,T3收获了一个树状数组求逆序对调了半年。。
T1「优先队列」
首先贪心:把所有矩形放到一个角不会变差,所以问题转化为了删去一些二元组,使得min_x*min_y最大
那显然是枚举从小到大删去k个x(即把min_x的二元组删去),删去m-k个y,但是删去x的同时,y也有可能顺带删去
那么如何优化O(n)暴力统计答案。
sort预处理x,优先队列维护y,枚举k(m->0),先把m+1->n的y放入优先队列中,那么每次取队顶的min_y,然后用X_{k+1}*min_y更新答案,每次pop队顶表示下一次也一定会选到
T2「(树上)主席树」
再次学习主席树,憋了一下午总算憋出了一个per和nxt
题意转化为当前询问的所有点到lca的路径上的所有点的min{(r-a_i)}
那么dfs对每个点建立主席树,然后查询每个点到lca的pre和nxt值并与r做差取min