摘要: 对于每个点,有效的反转次数不会超过2,所以只要求出每个点的反转次数,加上其本身的0/1,再对2取模,就是这个点现在的颜色 问题来了,如何求某个点的反转次数呢?可以逆向思维,先把每个点的反转次数存在数组fli中,某个点的反转次数等于 其本身反转次数以及上下左右四个点的反转次数之和 (能对这个点有影响的 阅读全文
posted @ 2018-10-28 21:33 Zolrk 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 题目大意是,判断一个有向图中所有的任意两点x,y,是否满足,从x可以走到y 或者 从y可以走到x 很显然,同一个SCC中的所有点一定满足这个条件,当同一个SCC中的所有点要么同时选要么同时不选的时候,就可以缩点了。缩点的方法就是给每个点加一个强联通分量编号(染色),然后tarjan结束后考察每一条边 阅读全文
posted @ 2018-10-28 21:31 Zolrk 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 先说一个没有滚动数组的版本 对于A串的一个字符,只有选和不选两种可能,选是一种方案,不选也是一种方案 设$f(i,j,k)$ 为A串的前 i 项在 分离出 第k个子串 时 成功匹配到B串的前 j 项时 选择 A串第i项的方案数 还需要加上A串第i项不选择的方案 设$s(i,j,k)$ 为A串的前 i 阅读全文
posted @ 2018-10-28 21:29 Zolrk 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 记忆化搜索也是实现dp的一种,有时候可能比状态转移方程推过去复杂,但有时候因为是直接去搜索,反而降低了思维难度 就用01背包来练练手(设c为容量,w为重量,v为价值) 记忆化搜索 是在搜索的基础上,进行优化,跳过打开相同的子树,从而避免大量的重复计算。因为在搜索的时候可能会再次dfs到一个已经到过的 阅读全文
posted @ 2018-10-28 21:28 Zolrk 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 两个问题都需要按照 每个节点的相邻点 来思考解法。 把符合题目要求的,可产生联合权值的有序点对,称为 联合点 。 第一问 每个节点的子节点(相邻点)之间,彼此组成联合点,具体看图。 可以比较每个节点的相邻点的权值,得到最大子节点和次大子节点。 他们的联合权值就是这个节点所能 发现 的最大联合权值。 阅读全文
posted @ 2018-10-28 21:27 Zolrk 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 注意这X家不一定连续,并且输入中给定的就是第i家到入口的距离 先想只有一个的情况,扫一遍,找到其中最大的那个(路径要乘上2) 两个的呢?不大好想,不如想想n个的时候,情况最简单,那么从n到n 1的转移也很简单 考虑把过程反过来,一个个删点,每次删使得答案变化最小的点 现在问题是 快速找出区间内对答案 阅读全文
posted @ 2018-10-28 21:20 Zolrk 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 这种矩形问题常用单调队列优化枚举(通过贪心取最优降低了一个维度的枚举) 推荐这道题也要做一做:[\[ZJOI2007\]棋盘制作][1] 单调队列的空间记得开大点! 反正内存够用 注意,这题正方形边长是固定的! 暴力算法是枚举上边界所在的行,左边界所在的列,通过这两个个信息确定一个正方形,然后预处理 阅读全文
posted @ 2018-10-28 09:48 Zolrk 阅读(126) 评论(0) 推荐(0) 编辑