摘要: 分析: 我们可以考虑,因为我们必须经过这些节点,那么我们可以将它状压,并且我们因为可以重复走,只是要求停顿前后,不要求遍历前后,那么我们之间存一下点与点之间的最短路,之后每次转移一下就可以了。 f[i][S]表示在i节点,状态为S,转移:f[i][S]=max{f[j][S^(1<<i-1)]+di 阅读全文
posted @ 2018-05-27 19:29 Winniechen 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 分析: 我们考虑,因为每次放置的时候,都是向子树中含有的编号最小的哪一个走,那么放置的顺序是固定的,我们将边以to的子树最小排序,之后得到的出栈序就是球的放入顺序。目测可以使用堆来实现,线段树也能实现,链表和并查集不能实现。 每次放球可以暴力的放入,因为满足实际不可以放入超过n个球。 每次取走的球可 阅读全文
posted @ 2018-05-27 11:37 Winniechen 阅读(244) 评论(0) 推荐(1) 编辑
摘要: 分析: k很小,可以状压。 f[S][i]表示状态S表示在i之前k+1个中点的边数奇偶情况 之后转移的时候,S的最后一位不能为1 附上代码: 阅读全文
posted @ 2018-05-27 11:31 Winniechen 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 分析: 这个题很好啊,比起什么裸的状压DP高多了! 我们可以考虑,什么时候答案最大:全合并,之后再分裂 这样,我们必定可以得到答案,也就是说答案必定小于n+m 那么我们可以考虑,什么时候能够使答案更小:就是n中去一些,m中取一些,它们的和相等的时候,ans-=2; 这样,我们就可以考虑状态f[S][ 阅读全文
posted @ 2018-05-27 11:28 Winniechen 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 分析: 建图最短路,比较裸。 我们可以考虑,如果是‘\’那么,左上连右下边权为0,左下连右上边权为1,反之亦然。 卡裸spfa,加点优化能过,我就直接改成的堆优化Dijkstra 附上代码: 阅读全文
posted @ 2018-05-27 11:21 Winniechen 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 可并堆 可并堆,又称为左偏树,满足从一个节点一直向左儿子走比一直向右儿子走距离更长。 这样,它就满足了往右走最多log次,也就是每次合并的时间复杂度为O(log) 合并:将一个合并到另一个的右儿子上,合并的同时满足堆的所有性质。 BZOJ1455罗马游戏: 维护小根堆,每次合并的时候讲大的合并到小的 阅读全文
posted @ 2018-05-27 11:15 Winniechen 阅读(914) 评论(0) 推荐(1) 编辑