3117. Minimum Sum of Values by Dividing Array
3117. Minimum Sum of Values by Dividing Array
Description
You are given two arrays nums
and andValues
of length n
and m
respectively.
The value of an array is equal to the last element of that array.
You have to divide nums
into m
disjoint contiguous subarrays such that for the i^th
subarray [li, ri]
, the bitwise AND
of the subarray elements is equal to andValues[i]
, in other words, nums[li] & nums[li + 1] & ... & nums[ri] == andValues[i]
for all 1 <= i <= m
, where &
represents the bitwise AND
operator.
Return the minimum possible sum of the values of the m
subarrays nums
is divided into. If it is not possible to divide nums
into m
subarrays satisfying these conditions, return -1
.
Example 1:
1 | Input: nums = [1,4,3,3,2], andValues = [0,3,3,2] |
Example 2:
1 | Input: nums = [2,3,5,7,7,7,5], andValues = [0,7,5] |
Example 3:
1 | Input: nums = [1,2,3,4], andValues = [2] |
Constraints:
1 <= n == nums.length <= 10^4
1 <= m == andValues.length <= min(n, 10)
1 <= nums[i] < 10^5
0 <= andValues[j] < 10^5
Hints/Notes
- top-down dp
Solution
Language: C++
1 | class Solution { |