摘要: Halloween Costumes 基础区间dp AC_Code 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn = 110; 5 int dp[maxn][max 阅读全文
posted @ 2020-02-02 18:22 swsyya 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 思路: 可以发现朴素的区间dp已经不足以解决这个问题了。对于石子合并问题,有一个最好的算法,那就是GarsiaWachs算法。时间复杂度为O(n^2)。 设序列是stone[maxn],从左往右,找到一个最小的且满足stone[k-1] <= stone[k+1]的k,找到后合并stone[k]和s 阅读全文
posted @ 2020-02-02 15:38 swsyya 阅读(293) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2020-02-02 12:24 swsyya 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 这道题是不可以用贪心的:因为每次要求合并相邻的两堆,不能保证每次合并的都是最多的,或是最少的 有一道题是链式的:石子归并 加上环怎么办? 断环为链:将长度为n的链复制一份接在后面,环的情况就是长度为2n的链中任意连续的长度为n的链。 注意平行四边形只能用于min,这道题要求的max是不能用平行四边形 阅读全文
posted @ 2020-02-02 11:04 swsyya 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 【思路】 我们 dp[i][j] 来表示合并第 i 堆到第 j 堆石子的最小代价。 那么状态转移方程为 dp[i][j] = min ( dp[i][j],dp[i][k]+dp[k+1][j]+w[i][j]); 其中, w[i][j] 表示把两部分合并起来的代价,即从第 i 堆到第 j 堆石子个 阅读全文
posted @ 2020-02-02 10:45 swsyya 阅读(277) 评论(0) 推荐(0) 编辑
摘要: AC_Code 1 #include <bits/stdc++.h> 2 #include <cstdio> 3 #include <cstring> 4 #include <string> 5 #include <cmath> 6 #include <queue> 7 #include <stac 阅读全文
posted @ 2020-02-02 10:03 swsyya 阅读(185) 评论(0) 推荐(0) 编辑

回到顶部