[NOI2011]Noi嘉年华

题解:

思路挺水的一道题

首先肯定将时间离散化排序后考虑

然后预处理出ff[i][j]表示从i-j时刻,被包含了多少值

令f[i][j]表示进行到i时刻,A中的个数是j,B中的个数的最大值

转移也挺显然,就是枚举决策 时间n^3

这样第一问就解决了

考虑第二问

会发现就等价于求min(x+y+ff[i][j],f[i][x]+g[j][y]) (其中i<begin,j>end) 其实ff[i][j]也可以加到后面这项,但是因为他们是对称的所以已经算过了

这样暴力求解是n^4的

考虑如何优化

1.n^3logn,这个比较显然

当x确定时,显然x+y+ff[i][j]随y+而+,而f[i][x]+g[j][y]随y+而-

那么二分y找到两个单调函数的交点就可以了

2.n^3(是看了题解才知道的。。发现真是很智障。。2d2d的优化见得太少了)

其实上面这个已经很接近了,只是把结论强化一下

我们假设左边为x时右边的最优解为y,那么当左边为x+1时,y一定是不增的

这样显然是n^3的

意识流证明的话就是既然你min(x+y+ff[i][j],f[i][x]+g[j][y])>=min(x+y+1+ff[i][j],f[i][x]+g[j][y+1])

                     那么当x+1时,min(x+y+1+ff[i][j],f[i][x+1]+g[j][y])>=min(x+y+2+ff[i][j],f[i][x+1]+g[j][y+1])

                     因为这时的min是等于后面这一项的

原文地址:https://www.cnblogs.com/yinwuxiao/p/8696727.html