[NOI2011]NOI 嘉年华

传送门

参考神仙题解

果然\(DP\)杀我

这个数据范围一脸区间\(DP\)的杨子,确实有关系

我们发现如果一个场地选了活动\(n\),那么\([s[i],t[i]]\)内的所有活动应该都选了

限离散化时间,统计\(tot[l][r]\)内活动总数

\(pre[i][j]\)\(1-i\)时间内第一个场地选\(j\)个活动,第二个场地能举办的最多的活动数

我们需要枚举时间段来转移,枚举\(1<=k<=i\)

讨论\([k,i]\)时间内的活动放到第一个场地还是第二个场地

\(pre[i][j]=min(pre[k][j]+tot[k][i],pre[k][i-tot[l][r]])\)

我们再用同样方式算出\(suf[i][j]\)表示\(i-m\)时间内第一个场地选\(j\)个活动,第二个场地能举办的最多的活动数

\(f[l][r]\)表示\([l,r]\)内的活动在第一个场地内进行,两个场地活动数的最小值

可以枚举第一个场地在\(l\)之前选了\(x\)个活动,\(r\)之后选了\(y\)个活动 得到转移

\(f[l][r]=min(x+tot[l][r]+y,pre[l][x]+suf[r][y])\)

考虑当\(x\)变大时,如果\(y\)也变大,必然导致后面那一项减少,所以当\(x\)变大时\(y\)只要变小,求\(f\)数组的复杂度可以降低到\(O(n^3)\)

那么当没有要求时\(ret=max\{min(pre[m][i],i)\}\)

当有要求时,我们枚举所有包含\([s[i],t[i]]\)的区间,求\(f[l][r]\)的最大值

猜你喜欢

转载自www.cnblogs.com/knife-rose/p/12618739.html