考虑dp[i][j]表示最后一个为j,最后一段区间从j开始的最大缺失值之和,g[i][j]表示区间(i,j)的缺失值那么转移分为两种: 第一种
dp[i + 1][j] = max(dp[i + 1][j], dp[i][j] - g[j][i] + g[j][i + 1])
表示延续当前区间
第二种
dp[i+1][i+1]=max(dp[i+1][i+1],dp[i][j]+g[i+1][i+1])表示新开一个区间
小 W 得到了一个长度为 n 的整数序列 a1,a2,…,an,他希望将其划分为若干连续的非空子段。每一个子段的「缺失值」定义为:在该子段中没有出现过的最小非负整数。例如,子段 [1,2,3] 的缺失值为 0,子段 [1,0,2] 的缺失值为 3。小 W 的目标是最大化所有子段缺失值的总和。
请你帮他计算出最大可能的总和。
数据范围:测试数据组数 T 满足 1≤T≤100。每组数据中,序列长度 n 满足 1≤n≤2000,且 0≤ai≤n。所有测试数据的 n 之和不超过 2000。
第一行包含一个整数 T,表示测试数据组数。 接下来每组数据包含两行:
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册