摘要:
嘟嘟嘟 看到 m <= 10,就知道这道题可定是状压dp。 还是一行一行dp,可见当前第 i 行能否放炮兵,除了和第 i 行的地形有关,还和 i - 1, i - 2行炮兵的放置状态有关。 因此dp要开三维,dp[k][j][i] 表示第 i 行的放置状态为 j, i - 1 行的放置状态为h时最多 阅读全文
摘要:
嘟嘟嘟 这道题感觉和昨天的凉心模拟有点像,不过这一次n和m都是手动输入的,所以矩阵自己画不出来。 但总体的思路还是一样的:状压dp,每一行为一个状态。 考虑每一个状态:对于每一个1 * 2的方块,要么横着放,要么竖着放。竖着放对于这一行相当于这一块的一半。因此,第k位为1表示第 i 行第k列有一个一 阅读全文
摘要:
嘟嘟嘟 dfs后,如果 low[v] >= dfn[u],则 u 就是割点。 不过如果 u 是搜索树的根节点的话,还要判断他至少有两个出边,而且这个判断必须加在v没有被走到的前提下。这样就表示有一些点只能通过根节点走到,那么如果这种点多于1个的话,根节点就是割点了。 1 #include<cstdi 阅读全文
摘要:
嘟嘟嘟 首先求树的直径两次bfs即可,实际上bfs就是最短路,因为树上路径是唯一的,所以用任何一种遍历方法都行(spfa和dijkstra当然也可以)。 可以证明,只要求出任意一条直径就行了,为什么呢?考虑一下,如果我们在直径上选了一段,那么最远偏心距可肯定是到直径两端的最大值,和直径外的点无关,只 阅读全文