#include <iostream> #include <vector> using namespace std; int main() { int n,k; cin>>n>>k; vector<int> arr(n); for(int i=0;i<n;i++){ cin>>arr[i]; } vector<vector<int>> dp(k,vector(2,0)); //对买入的股票花销赋初值 for(int i=0;i<k;i++){ dp[i][0]=-arr[0]; } //遍历 for(int i=1;i<n;i++){ //i时刻第一次买入 dp[0][0]=max(dp[0][0],-arr[i]); //i时刻第一次卖出 dp[0][1]=max(dp[0][1],dp[0][0]+arr[i]); for(int j=1;j<k;j++){ //i时刻第j+1次买入 dp[j][0]=max(dp[j][0],dp[j-1][1]-arr[i]); //i时刻第j+1次卖出,收益为i-1时刻卖出与i时刻卖出的收益最大值 dp[j][1]=max(dp[j][1],dp[j][0]+arr[i]); } } cout<<dp[k-1][1]; return 0; } // 64 位输出请用 printf("%lld")