摘要: 发现答案=$\frac{n\texttt{个点的不同二叉树的叶子数量和}}{n\texttt{个点的不同二叉树数量}}$ $n$个点的不同二叉树数量是卡特兰数的典型应用之一,NOIp2018提高组初赛还考过(单项选择第八题),卡特兰数的第$n$项是有$n$个节点的不同二叉树的数量(而题目里说是$n+ 阅读全文
posted @ 2019-03-17 18:19 xryjr233 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 我们枚举计算点两两之间的距离。 然后我们从小到大考虑每一个距离。 如果我们想让部落之间的最短距离最大,就要尽可能让当前的边连接的两个点在同一个部落中。 因此我们记录剩余的部落数量,每次把最短的,连接两个部落的边连接的两个部落合并成一个,直到剩余部落数量为$k$。 然后剩下的边权最小的连接两个部落的边 阅读全文
posted @ 2019-03-17 18:18 xryjr233 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 一看~~数据范围~~题意猜测是网络流。 于是开始建模。 我们建立源点$S$和汇点$T$,将$S$向想要睡觉的小朋友连容量为1的边,将不想睡觉的小朋友向$T$,连容量为1的边,朋友之间连流量为1的 双向 边。 那么我们需要使图被分为两个互不连通的集合,一个和$S$连通,表示最终投了睡觉的小朋友;另一个 阅读全文
posted @ 2019-03-17 18:17 xryjr233 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 我们把每一个骑士看做一个点,和他厌恶的骑士之间连一条双向边。 那么问题变为求基环树森林上的最大权独立集。 我们先考虑一颗基环树上的情况。 下图是一棵基环树,蓝边为环上的边。 发现每一块连在一起的非环边(红边)构成一棵树,而且明显每一棵树中有且仅有一个环上的点。 那么我们把每棵树中环上的点作为根,设$ 阅读全文
posted @ 2019-03-17 18:16 xryjr233 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 看到区间翻转果断Splay。 然后就没了... 设当前光标位置$p$。 MOVE,PREV,NEXT只需要加减$p$就好了。 设$f_x$为Splay中第$x$小的节点的编号。 INSERT可以将Splay中$f_p$splay到根,$f_{p+1}$splay到根的儿子。 把新的节点先建一棵Spl 阅读全文
posted @ 2019-03-17 18:16 xryjr233 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 首先你需要一个~~python~~高精度模板。 然后二分答案,快速幂判断就好了。 设被开根数$n$有$b$位。 发现朴素的高精度乘法是$O(b^2)$的,所以我们考虑优化 你可以写压位高精(我最后的做法,压了8位),或者写一个FFT。 提示:最好不要尝试同时压8位+FFT,否则你就会像我一样因为精度 阅读全文
posted @ 2019-03-17 18:15 xryjr233 阅读(197) 评论(1) 推荐(0) 编辑
摘要: 首先我们设$dp_{i,j}$表示$i$和的子树中,有$j$个黑色节点的最大边权和。 我们设$i$ 当前已合并 的子树大小为$sz_i$。 现在我们要合并节点$x$和它的子节点$y$。 我们考虑$x$和$y$之间的边对答案的贡献。 这个贡献就是这条边[(一侧的黑点数$\times$另一侧的黑点数)+ 阅读全文
posted @ 2019-03-17 18:14 xryjr233 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 我们设最小的系数为$m$。 那么如果$B=im+j$($i,j$为非负整数,$j using namespace std; const long long INF=1e13; struct edge{ int t,v,nxt; }e[6000010]; int n,a[15],mn=1e9,cnt, 阅读全文
posted @ 2019-03-17 18:12 xryjr233 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 首先看到左右端点的范围为$10^9$,首先离散化。 考虑将所有区间按照 原来的 长度升序排序,每次将开头一个区间加入,看有没有被大于等于$m$个区间覆盖的点,如果有,不停地从末尾删掉区间,直到没有点的覆盖次数大于等于$m$的点。那么我们就得到了以我们新加入的那个区间的原长度为最长区间长度,那么使得有 阅读全文
posted @ 2019-03-17 18:11 xryjr233 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 首先,我们可以从高到低枚举,看这一位是否可以通过一个分割,使得每一块的异或和在这一位上都为0。 这个贪心显然是正确的。 我们设这个序列的前缀异或和为$xs$,前$i$个数(从第一个开始)的前缀异或和二进制的第$j$位(从第0位开始)为$xs_{i,j}$。 设当前位为$i$ 则如果一段区间$[l,r 阅读全文
posted @ 2019-03-17 18:11 xryjr233 阅读(124) 评论(0) 推荐(0) 编辑