
DP
文章平均质量分 54
AltairXs
不定期更新懒人
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【洛谷】加分二叉树,P1040
dp,整个树是由中序遍历1,n构成的,score[i][j]记录的是中序遍历为i,i+1,...,j-1,j的子树的最高加分。tag[i][j]记录的是中序遍历为i~j的子树的根节点,用于重建前序遍历。那最高加分的结果对应的是score[1][n]。dp的思路就是,先设置只有一个节点的子树的初值,即只含有根节点的子树,即score[i][i]和tag[i][i]的初始值。然后按照子树含有的元素个数...原创 2018-03-27 14:05:55 · 247 阅读 · 0 评论 -
【USACO】Cow Pedigrees
DP,方程关系是,高为K,node数为N的树,相当于,(1)左子树高为K-1,右子树高<=K-2;(2)左子树高<=K-2,右子树高为K-1;(3)做右子树高度都为K-1;三种情况的和。(1)和(2)是对称的,所以求一个*2即可。求(1)时,需要枚举左子树的node数量。下面是DP方程:设a[i][j]是高为j,node数为i的子树的数量。b[i][j]是高<=j,node数为i...原创 2018-05-01 14:36:11 · 264 阅读 · 0 评论 -
【USACO】Money Systems
原理在注释里,自己写的不是这样的,参照答案改的。自己写的是最原始版本的DP。但这个推理貌似很厉害的样子,记住之。/*ID :LANG: C++11TASK: money */#include <iostream>#include <algorithm>#include <cstdio>#include <cstdlib>#incl...原创 2018-05-02 18:26:57 · 314 阅读 · 0 评论 -
【USACO】Number Triangles
/*ID : LANG: C++11TASK: numtri */#include <iostream>#include <algorithm>using namespace std;int main() { freopen("numtri.in", "r", stdin); freopen("numtri.out", "w", std原创 2018-04-21 13:13:38 · 280 阅读 · 0 评论 -
【USACO】Superprime Rib
/*ID :LANG: C++11TASK: sprime */#include <iostream>#include <algorithm>#include <cmath>using namespace std;int N;bool judgePrime(int n){ int bound = sqrt(n); if...原创 2018-04-21 17:05:47 · 423 阅读 · 0 评论 -
【USACO】Subset Sums
/*ID :LANG: C++11TASK: subset */#include <iostream>#include <algorithm>#include <cmath>#include <cstring>using namespace std;int N;int main(){ freopen("subse...原创 2018-04-27 02:31:25 · 253 阅读 · 0 评论 -
【USACO】The Longest Prefix
嗨呀,用了std::ios::sync_with_stdio(false),比答案块一丢丢。用了一点DP的思想。对每个字符,因为prefix最长为十的原因,只需要,检测其前缀(从长度为一到长度为十,包括该字符本身)是否在primitive集合中。/*ID :LANG: C++11TASK: prefix */#include <iostream>#include <...原创 2018-04-28 22:02:17 · 356 阅读 · 0 评论