2017年3月21日

摘要: 一开始最不好想:答案同时可以表示为两个人分别干这个事情,如果a得到的序列=b得到的序列,那么ans++。 于是我们就可以dp[i][j][k]表示共取出了i个,a在第一根管子里取出j个,b取出k个。 这样的复杂度是n^3,不足以通过本题。 打表发现真正需要的状态很少,于是先bfs出所有的状态,然后f 阅读全文

posted @ 2017-03-21 23:24 ziliuziliu 阅读(208) 评论(0) 推荐(0) 编辑

摘要: 神思路orzorzorzorzorzorz 首先可以这么想:对一个子序列翻转即是相当于对i1<i2<....<ik<jk<jk-1<....j1,swap(i,j)。 然后dp[i][j][k][m]表示对于区间i,j,它前面的最大值是k,它后面的最小值是m,的答案。 转移分成两类:一类是swap( 阅读全文

posted @ 2017-03-21 15:47 ziliuziliu 阅读(186) 评论(0) 推荐(0) 编辑

摘要: 放个链接就好了。。。。。http://blog.csdn.net/popoqqq/article/details/45365759 阅读全文

posted @ 2017-03-21 10:47 ziliuziliu 阅读(125) 评论(0) 推荐(0) 编辑

摘要: dp[i][j][k]表示[i,j],子树权值>=k的答案。 注意因为考虑每一层的贡献,因此这个dp和深度无关。 阅读全文

posted @ 2017-03-21 08:17 ziliuziliu 阅读(128) 评论(0) 推荐(0) 编辑