区间dp
流浪小林
这个作者很懒,什么都没留下…
展开
-
you are the one
题解:本题采用区间dp。为什么可以这样做呢?我们考虑如果所有长度小于等于n-1的区间最小值已知的话,那么我们可以枚举第一个数是第几个出栈的,就将整个整个区间分成了两段,2-k这个区间先出栈且答案已知,第一个数第k个出栈,后面的数只需要在原来答案已知的情况下,再加上k*他们的和,用前缀和来维护。 所以dp公式为dp[i][j]=min(dp[i][j],dp[i+1][i+k-1]+dp[i+k][j]+(k-1)*a[i]+k*(sum[j]-sum[i+k-1]) #include<bits/原创 2022-02-23 16:32:14 · 473 阅读 · 0 评论 -
Dire Wolf(区间dp1001)
#include<bits/stdc++.h> using namespace std; const int maxn = 220; int a[maxn], b[maxn], dp[maxn][maxn]; #define inf 0x3f3f3f3f int main() { int t; cin >> t; int cas = 1; while (t--) { int n; cin >> n; for (int i = 1; i <= .原创 2022-02-23 15:32:30 · 388 阅读 · 0 评论