链接:https://ac.nowcoder.com/acm/problem/247068
来源:牛客网
对于两个序列a,b,求一个l和r使得在min(区间和a,区间和b)最大。
发现就是min(sum1[r]-sum1[l-1],sum2[r]-sum2[l-1]).那这个为什么难处理呢?因为有min,为了把min拿掉我们应该强制sum1[r]-sum1[l-1]<sum2[r]-sum2[l-1] 这样min(sum1[r]-sum1[l-1],sum2[r]-sum2[l-1])==sum1[r]-sum1[l-1],变换一下就是在sum2[l-1]-sum1[l-1]<sum2[r]-sum1[r],且l<r的条件下求最大的sum1[r]-sum1[l].这就是一个二维偏序问题。把结构体按sum2-sum1从小到大排序,然后把其在数组中的下标变成其在树状数组的下标,树状数组维护所有符合条件的sum[x]的最小值,比如下标i会作用到[i,n].然后就是查询的事情了。
对于另一半也是一样的操作。强制sum1[r]-sum1[l-1]>sum2[r]-sum2[l-1].
标签:偏序,min,树状,sum2,sum1,二维 From: https://www.cnblogs.com/ljl1234/p/16981022.html