0.题目简述
给定两个正整数n,m (1 ≤ n ≤ 300 , 0 ≤ m ≤ n)以及一个长度为n的数组a( 1 ≤ ≤ 1e9)。操作一:将其中一个个数字修改成任意数字,上限m次; 操作二:选定一个段连续区间,使区间里的每个数字都减一,无上限。求在进行操作一之后,最少需要几次操作二可以使所有数字都变成0。
1.大致思路
看到数据和题目,大概率可以猜到这道题是一个DP。可是DP应该怎么打呢?
首先,我们可以定义一个数组dp[i][j][k],表示[i,j]内使用k次操作一后,至少需要几次才能将所有数字变成0。初始状态不难想到:dp[i][i][0]=a[i],dp[i][i][k]=0(k≥2)。可是,状态转移方程该怎么写呢?是dp[i][j][k]=min(dp[i][l][p]+dp[l+1][j][k-q])吗?
答案是不行。首先,这样子的话更新单个状态的时间复杂度为O(