前两题都比较简单,这里给出后两题我的解法 给一个长为n的数组a,将其分成恰好m个非空子数组,对每个子数组内部求gcd,求m个gcd值的和的最大值,1≤m≤n≤400。 典型的区间dp问题。 首先计算gcd[l][r]表示数组下标l到r的gcd值,后续考虑dp[i+1][j+1]表示到第i个数字,恰好分成j个子数组的gcd的和的最大值。初始dp[0][0]=0,其余为-inf。转移时遍历当前子数组的左端点[0,i],即: 时间复杂度 给一个长为n的数组a,有q次查询,每次查询为[op, l, r],若op=1则计算 a[l] & a[l+1] | a[l+2] & a[...