摘要: 我们首先考虑没有操作1和操作2怎么做 分析一下lca(x,y)!=root这个条件。 也就是说,每一组中的任意两个点,都需要属于根节点的两个不同儿子的子树。 我们不妨求出根节点的每一个儿子中有多少个给出的点,这个直接用树状数组就能求出来。 这样就得到了一个序列a1,a2...acnt。 这里注意:这 阅读全文
posted @ 2019-02-07 21:03 Creed-qwq 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 01背包退背包 首先dp出01背包数组dp[]。 完全背包退背包 首先dp出完全背包数组dp[]。 转移的时候带系数的背包不一定可以退背包。 还有个比较经典的题 https://www.luogu.org/problemnew/show/P1450 容斥求多重背包方案数。 阅读全文
posted @ 2019-02-07 07:00 Creed-qwq 阅读(789) 评论(0) 推荐(0) 编辑
摘要: 考虑到路径是有向的,不是很好维护。 如果路径无向的话,可以直接转化为链加和查询操作。 既然有向的话,不妨考虑一波hash。 对于一组询问x,y,可以把树划分为两颗子树。 合法显然需要满足 x子树的起点的hash=y子树的终点的hash x子树的终点的hash=y子树的起点的hash 直接用LCT维护 阅读全文
posted @ 2019-02-07 06:30 Creed-qwq 阅读(143) 评论(0) 推荐(0) 编辑
摘要: day4 下午:订正上一场CF的D和E,学习ETT。 晚上:订正ZR T1,codeforces。 半夜:LCT习题一道,继续学习组合数学,做两道题。 day5 订正CF F题 阅读全文
posted @ 2019-02-07 04:19 Creed-qwq 阅读(175) 评论(0) 推荐(0) 编辑
摘要: https://www.lydsy.com/JudgeOnline/problem.php?id=2555 想一下sam求子串出现次数的方法基本就能得到正解。 由于子串出现次数是一个子树和的形式。 动态插入字符串又要求动态维护树的结构,显然要用LCT。 注意一下LCT维护子树和的写法即可。 cpp 阅读全文
posted @ 2019-02-07 04:16 Creed-qwq 阅读(241) 评论(0) 推荐(0) 编辑