思路:因為要求分為k個區間,所以依次列舉將區間分為k個,然後列舉左右區間,求出區間的最大,最小值。
注意:陣列開兩倍。
**:
#include using namespace std;
typedef long long ll;
const int n = 105;
ll dp[2][n][n][n] = ,a[n] = ;
const ll mod = 10;
const ll inf = 1e16+10;
int n,m;
ll mod(ll x)
int main(void)
dp[1][i][l][r] = inf;
for(int j=l;j<=r;j++)}}
}ll mx = 0,mi = inf;
for(int i=1;i<=n;i++)
mx = max(mx,dp[0][m][i][i+n-1]),mi = min(mi,dp[1][m][i][i+n-1]);
printf("%lld\n%lld\n",mi,mx);
return 0;
}
洛谷 P1043 數字遊戲 區間DP
丁丁最近沉迷於乙個數字遊戲之中。這個遊戲看似簡單,但丁丁在研究了許多天之後卻發覺原來在簡單的規則下想要贏得這個遊戲並不那麼容易。遊戲是這樣的,在你面前有一圈整數 一共n個 你要按順序將其分為m個部分,各部分內的數字相加,相加所得的m個結果對10取模後再相乘,最終得到乙個數k。遊戲的要求是使你所得的k...
P1043 數字遊戲
丁丁最近沉迷於乙個數字遊戲之中。這個遊戲看似簡單,但丁丁在研究了許多天之後卻發覺原來在簡單的規則下想要贏得這個遊戲並不那麼容易。遊戲是這樣的,在你面前有一圈整數 一共n個 你要按順序將其分為m個部分,各部分內的數字相加,相加所得的m個結果對10取模後再相乘,最終得到乙個數k。遊戲的要求是使你所得的k...
P1043 數字遊戲
給乙個由 n nn 個數組成的環,講環拆成 m mm 份,每份求和最後相乘,求最大 最小值。一道區間 dpdp dp題,首先因為是環,常規做法就是拆環,用兩倍數組裝,又要對每份求和,那就需要用到字首和。陣列 dp i j dp i j dp i j 表示將 j jj 個數分成 i ii 份的最大 最...