- 石子合并(弱化版)
114514
- 2025-5-7 16:27:39 @
#include<iostream>
#include<cstring>
using namespace std;
int dp[5][5];
int preev[1001];
int main(){
memset(dp,0x3f,sizeof dp);
int n;
cin >> n;
for (int i=1;i<=n;i++){
cin >> dp[i][1];
preev[i]=preev[i-1]+dp[i][1];
dp[i][1]=0;
}
for (int i=2;i<=n;i++){ //长度
for (int j=1;j<=n-i+1;j++){ //起点
for (int k=1;k<i;k++){ //子区间1长度
dp[j][i]=min(dp[j][k]+dp[j+k][i-k]+preev[j+i-1]-preev[j-1],dp[j][i]);
}
}
}
cout << dp[1][n];
return 0;
}
0 comments
No comments so far...
Information
- ID
- 378
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 4
- Tags
- # Submissions
- 32
- Accepted
- 17
- Uploaded By