动态规划
2000xcm
oier
展开
-
动态规划基本模型(二)
区间DP 例题:石子合并; 先使用a[i]初始化每个石子的价值 合并n个则需要先合并n-1个 子问题就是合并1-n个的最小值 则合并l长度个的最小值为合并左结点到右结点的最小值; 子问题为每个区间的合并最小值; 使用k枚举每个区间; 则有dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+合并这两段的和) 使用sum[i]初始化每段的价值; for原创 2016-11-17 13:53:03 · 266 阅读 · 0 评论 -
背包模板
01背包 取或不取 保证只选一次 倒序枚举剩余空间 for (int i=1;i<=n;i++) for (int j=v;j>=c[i];j--) dp[j]=max(dp[j],dp[j-c[i]]+w[i]);完全背包 可取无限次 正序枚举剩余空间 for (int i=1;i<=n;i++) for (int j=c[i];j<=v;j++) dp[j]=max(d原创 2016-11-17 13:32:56 · 248 阅读 · 0 评论 -
动态规划基本模型(一)
#include #include #include #include using namespace std; int a[1001],b[1001],dp[10001]; int n,ans,ans1; int main () { cin>>n; for (int i=1;i<=n;i++) cin>>a[i]; for (int i=2;i<=n;i++) for (int j原创 2016-11-17 13:22:58 · 397 阅读 · 0 评论