摘要: 考虑暴力dp。 设$dp_i$表示前$i$个积木,保留积木$i$的最大答案。 那么有 $dp_i=max(dp_j)+1(i j,a_i a_j,a_i a_j\le i j)$ 对$j$的限制条件里前2条显然,后一条是因为要使积木$i$和$j$之间有足够的积木使它们的相对位置正确。 由第三条可得$ 阅读全文
posted @ 2019-03-17 18:45 xryjr233 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 两个 错误调了一整天... 1.pubp函数括号匹配错了 2.精度常数类型开成了int 就是一个大模拟,别的没什么好讲的,讲一讲我判断圆和线是否有交点的pubp函数,个人认为很容易理解。 ~~其实就是不想动脑子才用了简单粗暴的办法~~ 我们这样记录一条线段: 当该线段不与$x$轴垂直,我们记录${k 阅读全文
posted @ 2019-03-17 18:30 xryjr233 阅读(270) 评论(1) 推荐(0) 编辑
摘要: 显然这是一棵树。 设节点$i$和$j$之间的边为$(i,j)$,边$(i,j)$导电的概率为$q_{i,j}$,第$i$个点自身有电的概率为$p_i$ 考虑树形dp。 显然答案等于所有节点有电的概率之和。 考虑一个节点什么时候会被充电: 1.它自己有电; 2.它的孩子里有节点有电,并且这个孩子和这个 阅读全文
posted @ 2019-03-17 18:28 xryjr233 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 简化题意: 一棵$n$个点的树,每一个点有个初始点权,第$i$个点点权为$A_i$,要求任意节点的子节点权值相等,父节点权值等于子节点的和,问最少需要改变多少点的权值。 设节点$i$的子节点数量为$sz_i$,点$i$修改以后的点权为$w_i$。 发现我们通过一个点$i$的权值可以得到所有相邻点的权 阅读全文
posted @ 2019-03-17 18:27 xryjr233 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 设第一个串为$a$,第二个串为$b$。 不妨让我们的所有操作对$b$进行。 如果我们将$b$逆时针转动$j(0\le jn$,$a_i=0$,那原式等价于 $\sum_{i=1}^{n+j}a_ib_{n+j i+1}$ 就很明显了。 所以我们设当$j=x$,原式值为$v_{n+j}$,那么我们可以 阅读全文
posted @ 2019-03-17 18:26 xryjr233 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 又是一篇咕咕咕了好久的文章。 什么是多项式 一个形如$a_0+a_1x_1+a_2x_2+...+a_nx^n$的东西叫做关于$x$的$n$次多项式。 其中$a_i$叫做这个多项式的$i$次项系数。特别地,$a_0$是这个多项式的常数项。 多项式乘法 一个$n$次多项式和一个$m$次多项式的乘积是一 阅读全文
posted @ 2019-03-17 18:26 xryjr233 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 首选,对于$N$为偶数,我们可以不停地把它除以2,于是我们只用考虑$N$为奇数的情况。 我们有$A_{2i+1}=A_i+A_{i+1}$ 于是我们设$B_i=A_i+A_{i+1}$ 当$i$为奇数 $B_i=A_i+A_{i+1}=A_{\frac{i}{2}}+A_{\frac{i}{2}+1 阅读全文
posted @ 2019-03-17 18:23 xryjr233 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 如果我们确定了$r$和$c$,事实上也确定了打地鼠的方案。 因为所有$r\times c$的矩形中,只有1个能覆盖当前还有地鼠的位置组成的图形的角落上的那个洞,所以我们只能在那个角落上砸。 比如,我们目前剩下的地鼠分布为 0 0 0 0 0 0 1 2 0 2 1 2 2 2 3 1 那么我们只能以 阅读全文
posted @ 2019-03-17 18:22 xryjr233 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 首先,我们记录$mo_{i,j}$表示在点$i$到点$j$的任意一条最短路上,并且和$i$相邻的标号最小的节点,也就是当聪聪在点$i$,可可在点$j$时,聪聪下一步会走的节点。 显然可以对每一个点$i$跑最短路计算$mo_i$。 使用堆优化的Dijkstra的话这部分的总时间复杂度是$O(n^2\l 阅读全文
posted @ 2019-03-17 18:21 xryjr233 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 发现答案=$\frac{n\texttt{个点的不同二叉树的叶子数量和}}{n\texttt{个点的不同二叉树数量}}$ $n$个点的不同二叉树数量是卡特兰数的典型应用之一,NOIp2018提高组初赛还考过(单项选择第八题),卡特兰数的第$n$项是有$n$个节点的不同二叉树的数量(而题目里说是$n+ 阅读全文
posted @ 2019-03-17 18:19 xryjr233 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 我们枚举计算点两两之间的距离。 然后我们从小到大考虑每一个距离。 如果我们想让部落之间的最短距离最大,就要尽可能让当前的边连接的两个点在同一个部落中。 因此我们记录剩余的部落数量,每次把最短的,连接两个部落的边连接的两个部落合并成一个,直到剩余部落数量为$k$。 然后剩下的边权最小的连接两个部落的边 阅读全文
posted @ 2019-03-17 18:18 xryjr233 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 一看~~数据范围~~题意猜测是网络流。 于是开始建模。 我们建立源点$S$和汇点$T$,将$S$向想要睡觉的小朋友连容量为1的边,将不想睡觉的小朋友向$T$,连容量为1的边,朋友之间连流量为1的 双向 边。 那么我们需要使图被分为两个互不连通的集合,一个和$S$连通,表示最终投了睡觉的小朋友;另一个 阅读全文
posted @ 2019-03-17 18:17 xryjr233 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 我们把每一个骑士看做一个点,和他厌恶的骑士之间连一条双向边。 那么问题变为求基环树森林上的最大权独立集。 我们先考虑一颗基环树上的情况。 下图是一棵基环树,蓝边为环上的边。 发现每一块连在一起的非环边(红边)构成一棵树,而且明显每一棵树中有且仅有一个环上的点。 那么我们把每棵树中环上的点作为根,设$ 阅读全文
posted @ 2019-03-17 18:16 xryjr233 阅读(164) 评论(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 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 首先你需要一个~~python~~高精度模板。 然后二分答案,快速幂判断就好了。 设被开根数$n$有$b$位。 发现朴素的高精度乘法是$O(b^2)$的,所以我们考虑优化 你可以写压位高精(我最后的做法,压了8位),或者写一个FFT。 提示:最好不要尝试同时压8位+FFT,否则你就会像我一样因为精度 阅读全文
posted @ 2019-03-17 18:15 xryjr233 阅读(203) 评论(1) 推荐(0) 编辑
摘要: 首先我们设$dp_{i,j}$表示$i$和的子树中,有$j$个黑色节点的最大边权和。 我们设$i$ 当前已合并 的子树大小为$sz_i$。 现在我们要合并节点$x$和它的子节点$y$。 我们考虑$x$和$y$之间的边对答案的贡献。 这个贡献就是这条边[(一侧的黑点数$\times$另一侧的黑点数)+ 阅读全文
posted @ 2019-03-17 18:14 xryjr233 阅读(132) 评论(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 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 首先,我们可以从高到低枚举,看这一位是否可以通过一个分割,使得每一块的异或和在这一位上都为0。 这个贪心显然是正确的。 我们设这个序列的前缀异或和为$xs$,前$i$个数(从第一个开始)的前缀异或和二进制的第$j$位(从第0位开始)为$xs_{i,j}$。 设当前位为$i$ 则如果一段区间$[l,r 阅读全文
posted @ 2019-03-17 18:11 xryjr233 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 首先看到左右端点的范围为$10^9$,首先离散化。 考虑将所有区间按照 原来的 长度升序排序,每次将开头一个区间加入,看有没有被大于等于$m$个区间覆盖的点,如果有,不停地从末尾删掉区间,直到没有点的覆盖次数大于等于$m$的点。那么我们就得到了以我们新加入的那个区间的原长度为最长区间长度,那么使得有 阅读全文
posted @ 2019-03-17 18:11 xryjr233 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 同 "BZOJ2763" 。 注意本题起点终点不是$s,t$而是$1,n$,之前在不同层之间建立的权值为$0$的边权值改为$w/2$即可。 code: cpp include define val(u,id) (n (u)+id) using namespace std; struct node{ 阅读全文
posted @ 2019-03-17 18:10 xryjr233 阅读(134) 评论(0) 推荐(0) 编辑