摘要: 设计状态$f[i][j]$表示以i为根的子树,包含j个点的最小黑点数,$g[i][j]$表示以$i$ 为子树,包含$j$个点的最大黑点数,然后树形背包转移即可。 每次询问的时候就看包含x在不在$f[0][y]$和$g[0][y]$之间。 因为一个子图每删除一个点,再加入一个点,黑点个数的变化量不超过 阅读全文
posted @ 2018-10-19 22:16 SWHsz 阅读(217) 评论(0) 推荐(0) 编辑
摘要: TJOI2015 组合数学 和组合数学有什么关系呢。。。 本题相当与求该图的最小链覆盖 由$Dilworth$定理:$DAG$的最小链覆盖=最大点独立集 最大点独立集对于本图来说就是左下到右上一条最长路。 然后dp一下 $f[i][j]=max(max(f[i 1][j],f[i][j+1]),f[ 阅读全文
posted @ 2018-10-19 19:38 SWHsz 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 发现如果要凑$n$的钱,如果凑齐了$\ulcorner n/2 \urcorner$以下钱再来一个$\llcorner n/2 \lrcorner$就行了。 这样我们就可以分治了。。 阅读全文
posted @ 2018-10-19 15:31 SWHsz 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 状态是f[i][a][b][c][d]表示第i个餐车,1号矿洞最近两顿是a,b,2号矿洞最近两顿是c,d。 给的空间是16MB,滚动数组滚动了第一维就行了 (给的变量是char是因为这个不超过256,但是并没有快多少 cpp include include include using namespa 阅读全文
posted @ 2018-10-19 14:41 SWHsz 阅读(212) 评论(2) 推荐(0) 编辑
摘要: [POI2005]BAN Bank Notes ~~POI真好玩。。~~ 如果没有记录方案的话就是一个简单的二进制或单调队列优化多重背包的问题。 但是非常难受的是要记录方案。 而且空间只给了$64MB$,,令人不适。。。 可以记录状态$to[i][j]$表示从第i个物品转移到了j体积,这个在转移的时 阅读全文
posted @ 2018-10-19 09:46 SWHsz 阅读(176) 评论(0) 推荐(0) 编辑