摘要: 题解 建出一个主席树,因为出现大于区间一半的数只能有一个,就看看左右区间的增加有没有大于一半,如果有就走向那个子树,如果没有那么返回0 代码 cpp include include include include include include include include include def 阅读全文
posted @ 2018-06-20 18:02 sigongzi 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 题解 离线读入,我们发现一个矩形能被保护,矩形内部所有列上必定有一辆车,或者所有行上必定有一辆车 分两次进行处理 第一次按照横坐标把车加进去,然后查询最大横坐标在这个位置的矩形,纵坐标区间里的车出现位置的最小值有没有超过最小横坐标 第二次按照纵坐标把车加进去,然后查询最大纵坐标所在位置的矩形,横坐标 阅读全文
posted @ 2018-06-20 15:58 sigongzi 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 题解 波兰人的j是苹果,p是橘子 还真是跟中国过不去啊= =写的时候很难受 我们先求出每个点作为起点,能延伸到的最大长度,这个可以处理成前缀和,查询一下区间最小值是不是小于0,用st表实现,如果区间最小值大于等于0,那么这段区间,以该点作为起点是合法的 然后求出每个点作为终点能延伸到的最大长度,处理 阅读全文
posted @ 2018-06-20 15:06 sigongzi 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 题解 可以说是什么找规律好题了 但是要推生成函数,非常神奇…… 任何的一切都可以用$n^2$dp说起 我们所求即是 所有树的叶子总数/所有树的方案数 我们可以列出一个递推式,设$g(x)$为$x$个节点构成的树的总数 那么有 $g(n) = \sum_{i = 0}^{n 1}g(i) g(n 1 阅读全文
posted @ 2018-06-20 13:59 sigongzi 阅读(193) 评论(0) 推荐(1) 编辑
摘要: 题解 我们先把所有点random_shuffle一下 然后对前i 1个点计算一个最小圆覆盖,然后第i个点如果不在这个圆里,那么我们把这个点当成一个新的点,作为圆心,半径为0 从头枚举1 i 1,看看每个点在不在这个圆里,如果不在,那么就把新的点j,做一个圆经过i和j(就是i,j中点的作为圆心) 再枚 阅读全文
posted @ 2018-06-20 08:43 sigongzi 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 题解 我们由于莫比乌斯函数如果有平方数因子就是0,那么我们可以列出这样的式子 $\sum_{i = 1}^{n} \sum_{d|i} (1 |\mu(d)|)$ 然后枚举倍数 $\sum_{t = 1}^{n} \sum_{d = 1}^{\lfloor \frac{n}{t} \rfloor} 阅读全文
posted @ 2018-06-20 07:13 sigongzi 阅读(164) 评论(0) 推荐(0) 编辑