摘要: 题目链接 "Mychael vs Kid" 题解 先说说这题的由来及前身 前身 首先有一个很经典的题目: 维护区间加,查询区间$gcd$ 如果强行用线段树维护的话,区间加之后就没法直接确定当前区间的$gcd$,不可直接维护 这个时候就用到了$gcd$的一个性质: $$(a,b) = (a b,b)$ 阅读全文
posted @ 2018-05-28 20:12 Mychael 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 题目链接 "BZOJ2668" 题解 容易想到由$S$向初始的黑点连边,由终态的黑点向$T$连边,然后相邻的点间连边 但是这样满足不了交换次数的限制,也无法计算答案 考虑如何满足一个点的交换次数限制 当然是拆点 但是一个位置被经过时会被交换两次,而终点和起点都只交换了一次 那么我们就拆成三个点$le 阅读全文
posted @ 2018-05-28 16:05 Mychael 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 题目链接 "BZOJ1596" 题解 先抽成有根树 设$f[i][0|1][0|1]$表示以$i$为根,儿子都覆盖了,父亲是否覆盖,父亲是否建塔的最少建塔数 转移一下即可 C++ include include include include include include define Redge 阅读全文
posted @ 2018-05-28 11:48 Mychael 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 题目链接 "BZOJ3427" 题解 容易发现最终序列一定是$\{ 1,0,1\}$组成的 因为如果有一个位置不是,那么这个位置一定大于$1$,那么上一个位置一定为$1$,所以该位置一定加到过$1$。由于$1$已经满足条件,而经分析得大于$1$会使下一个位置的决策不优反劣,所以一定不会大于$1$ 那 阅读全文
posted @ 2018-05-28 10:39 Mychael 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 题目链接 "BZOJ3526" 题解 思来想去,发现很显然可以用线段树维护 每个区间保存所有合法方案的左右端点【当左端点一定是,右端点当然存最小的那个就行了】 这么整的数,$\frac{1}{1000}$的概率啊23333 阅读全文
posted @ 2018-05-28 09:39 Mychael 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 题目链接 "BZOJ3542" 题解 线段树裸题,,对每一行每一列开线段树 由于坐标很大,用$map$维护根下标 化一下式子,只用维护区间和,区间平方和,区间存在的个数 C++ include include include include include include define Redge( 阅读全文
posted @ 2018-05-28 08:42 Mychael 阅读(181) 评论(0) 推荐(0) 编辑