摘要: 前言 LCA的求法有多重多样,总结下来是下面这4种.希望大家可以加油! 暴力求LCA 我们考虑dfs求出每一个点的父亲(在当前根下),然后直接先暴力跳到同一个深度,再同时跳 树链剖分求LCA 考虑把一个树分成轻链与重链,然后直接跳链就好了. Tarjan求LCA 考虑把每一个询问当做一条边处理,那么 阅读全文
posted @ 2018-10-16 19:37 cj_gjh 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 题面 给定一个{0, 1, 2, 3, ... , n 1}的排列 p。一个{0, 1, 2 , ... , n 2}的排列 q 被认为是优美 的排列,当且仅当 q 满足下列条件: 对排列 s = {0, 1, 2, 3, ..., n 1}进行 n – 1 次交换。 1. 交换 s[q0],s[q 阅读全文
posted @ 2018-10-16 16:45 cj_gjh 阅读(474) 评论(2) 推荐(1) 编辑
该文被密码保护。 阅读全文
posted @ 2018-10-16 15:04 cj_gjh 阅读(8) 评论(0) 推荐(0) 编辑
摘要: Problem 有多少个非空子集,能划分成和相等的两份。 Solution 直接对于这n个数分成左右两个部分,然后考虑每一个数: 1. 在第一个集合 2. 在第二个集合 3. 两个集合都不在 所以可以直接对于这个东西搞一个Map和一个Set存一下,考虑把左边的和和右边的和分别抠出来,然后搞一下就可以 阅读全文
posted @ 2018-10-16 14:58 cj_gjh 阅读(199) 评论(2) 推荐(0) 编辑