摘要: 容易想到设f[i][j][k]为i~j区间以k为根是否能构成bst。这样是O(n4)的。考虑将状态改为f[i][j][0/1]表示i~j区间以i-1/j+1为根能否构成bst。显然如果是i-1作为根的话i~j区间都在它的右子树,所以转移时枚举右子树的根并判断是否合法,j+1类似。 阅读全文
posted @ 2018-10-12 19:00 Gloid 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 设f[i][j][k]为将i~j的字符最终合并成k的答案。转移时只考虑最后一个字符是由哪段后缀合成的。如果最后合成为一个字符特殊转移一下。 复杂度看起来是O(n32k),实际常数极小达到O(玄学)。 upd:突然发现根本没在bzoj上交。bzoj的数据输入中没有空格。 阅读全文
posted @ 2018-10-12 02:20 Gloid 阅读(349) 评论(2) 推荐(0) 编辑
摘要: A:签到。 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; int read() { in 阅读全文
posted @ 2018-10-12 01:17 Gloid 阅读(198) 评论(0) 推荐(0) 编辑