01 2019 档案

posted @ 2019-01-31 10:50 wxyww 阅读(161) 评论(0) 推荐(0) 编辑
摘要:题目链接 题意 给出一个$n$个字符串的字典。对于一个字符串,他的贡献是这个字符串中最多的在字典中出现的不重叠子串的数量。 然后问一个长度为$len$的,字符集为前$alphabet$个字符的字符串的贡献期望是多少。 思路 首先想如果这个长度为$len$的字符串已经给出了。应该怎么算贡献。 只要贪心 阅读全文
posted @ 2019-01-30 21:15 wxyww 阅读(122) 评论(0) 推荐(0) 编辑
摘要:题目链接 思路 观察题目中的式子,可以发现前两项是定值。所以只需要求出最后一项就行了。 然后题目就转化为了求字符串中所有后缀的$lcp$长度之和。 可以想到用后缀数组。在后缀数组上两个后缀的$lcp$长度表现为两个后缀排名之间的$height$的最小值。 所以现在问题就又转化为了在$height$数 阅读全文
posted @ 2019-01-30 12:15 wxyww 阅读(110) 评论(0) 推荐(0) 编辑
摘要:题目链接 题意 其实转化之后的题意就是求出树上有多少条路径长度是3的倍数。求答案的时候只要将这个数字除以总路径数量就行了。 思路 考虑点分治。对于当前子树,分别求出出树中每个点到根的路径长度对$3$取余后为$0,1,2$的个数。然后就可以通过$0 0,1 2$组合的方式,统计出答案。 然后删除当前点 阅读全文
posted @ 2019-01-30 10:01 wxyww 阅读(144) 评论(0) 推荐(0) 编辑
摘要:思想 点分治的思想其实就是在树上进行分治。从而降低复杂度。 每次找到一个点,对其进行处理,然后删除这个点,对剩下的子树进行递归处理。 因为重心的每个儿子的大小不超过$\frac{n}{2}$,所以如果这个点是重心的话,就可保证递归层数最多为log层。 实现 在弄懂点分治思想的情况下,点分治的代码还是 阅读全文
posted @ 2019-01-29 16:25 wxyww 阅读(124) 评论(0) 推荐(0) 编辑
摘要:题目链接 思路 我们换一种求$dep[lca(i,j)]$的方法。 将从根到$i$的路径上所有点的权值加$1$,然后求从根节点到j路径上点的权值和。就是$i$和$j$的$lca$的深度。 以此类推,对于求$\sum\limits_{i=l}^rdep[lca(i,z)]$,我们可以对于从l到r中的每 阅读全文
posted @ 2019-01-29 14:21 wxyww 阅读(394) 评论(0) 推荐(0) 编辑
摘要:定义 树的直径就是指树上的最长路径。一棵树可能有多个直径,并且这些直径一定两两相交。 性质 性质1 从树上的任何一个点为起点,所找到的最长路径的的终点一定是直径的一个端点。 证明: 考虑反证法。 ①假设直径与最长路径没有交集 用$dist(x,y)$表示从$x$到$y$的距离。$dist(S1,T1 阅读全文
posted @ 2019-01-29 10:34 wxyww 阅读(371) 评论(0) 推荐(0) 编辑
摘要:定义 树的重心是指树上的某个节点,满足删除当前点之后,生成的树的大小的最大值最小。 性质 性质1 以树的重心为根,那么根节点的每棵子树的大小都小于等于$\frac{n}{2}$。 性质2 每棵子树的大小都小于等于$\frac{n}{2}$的点一定是这棵树的重心。即性质$1$的逆命题。 性质3 树中所 阅读全文
posted @ 2019-01-24 12:49 wxyww 阅读(147) 评论(0) 推荐(1) 编辑
摘要:题目链接 题意 给出一个长度字符串$T$,其中只包含四种字符$(A,C,G,T)$,需要找一个字符串$S$,使得$S$的长度为$m$,问$S$和$T$的$lcs$为$0,1,2...|T|$时,分别有多少种情况。 $|T| include include include include includ 阅读全文
posted @ 2019-01-24 12:48 wxyww 阅读(126) 评论(0) 推荐(0) 编辑
摘要:题目链接 思路 乍一看这是一个01背包的裸题。但是数据范围$10^5$是无法承受的。 但是发现$p_i$和$w_i$只有10,也就是说最多只有100种物品。所以可以对他们进行分组。然后用二进制优化多重背包来做。 二进制优化多重背包 多重背包是指限定物品数量的一种背包问题。 多重背包可以转化为01背包 阅读全文
posted @ 2019-01-24 12:46 wxyww 阅读(110) 评论(0) 推荐(0) 编辑
摘要:题目链接 题面 思路 可以发现其实就是询问一个最长的区间,使得这个区间的平均数大于等于k。所以将区间内所有数字减去k,然后做一遍前缀和。只要是前缀和之差大于等于0的区间。就是满足条件的。 所以现在问题就成了对于前缀和上的每个数字,找到一个最靠前的比他小的数字。 这个可以用单调栈。可以发现如果后面的数 阅读全文
posted @ 2019-01-24 12:44 wxyww 阅读(179) 评论(0) 推荐(0) 编辑
摘要:题目链接 题面 思路 先考虑$n \leq 100$的做法。 区间dp。 状态。用$f[l][r]$表示知道l到r内$x$的位置最少需要的时间 转移。枚举一个$l \leq k \leq r$。那么现在我们要在k处挖油了,然后我们根据k处有没有油再去确定下次是挖$[k + 1,r]$还是$[l,k 阅读全文
posted @ 2019-01-24 12:42 wxyww 阅读(148) 评论(0) 推荐(0) 编辑
摘要:题目链接 思路 看到n比较小,可以状压。 可以先考虑什么情况下会无法平衡。显然就是排完序之后两两相邻的不能满足小于等于c的限制。 状态。用f[i]来表示i集合中的鹿完成交换所需要的次数。 预处理。无法平衡的肯定就是INF。已经平衡的是0。其他的先暂设为k 1(k是i集合中鹿的个数)。 然后转移。每个 阅读全文
posted @ 2019-01-23 16:16 wxyww 阅读(126) 评论(0) 推荐(0) 编辑
摘要:题目链接 题意 有n个房间,每个房间里面有若干把钥匙,每把钥匙可以打开对应的一扇门。如果手中没有钥匙,就要随机轰炸一个房间来打开这个房间。如果有钥匙,就要去打开这些房间。问期望轰炸次数是多少。 思路 根据期望的线性性质,总期望轰炸次数就是每个房间被轰炸的概率$\times$ 1。 所以就考虑每个房间 阅读全文
posted @ 2019-01-23 15:30 wxyww 阅读(321) 评论(0) 推荐(2) 编辑
摘要:题目链接 思路 floyd求一下传递闭包,然后统计每个点可以到达的点数。 会tle,用bitset优化一下。将floyd的最后一层枚举变成bitset。 代码 cmake= / @Author: wxyww @Date: 2019 01 23 15:08:40 @Last Modified time 阅读全文
posted @ 2019-01-23 14:50 wxyww 阅读(282) 评论(0) 推荐(0) 编辑
摘要:听attack学长讲完课,整理一波 基本运算 按位或 $1|1 = 1,1 | 0 = 1,0|0 = 0$ 按位与 $1\&1=1 ,1 \& 0 = 0,0 \& 0 = 0$ 异或 $1 \bigoplus 1 = 0,1\bigoplus 0 = 1,0 \bigoplus 0 = 0$ 异 阅读全文
posted @ 2019-01-22 21:13 wxyww 阅读(252) 评论(0) 推荐(1) 编辑
摘要:题目链接 圆方树 圆方树就是对于联通无向图中的每一个点双新建一个方点,与点双中的每个点连一条边,然后将原来的边删去。将原来的点看作圆点,新建的点看作方点。所以叫做圆方树。 性质 1.圆方树肯定是棵树(~~废话~~)。证明显然。 2.圆方树中与圆点相连的点肯定是方点。与方点相连的点肯定是圆点。 算法 阅读全文
posted @ 2019-01-21 17:18 wxyww 阅读(265) 评论(0) 推荐(0) 编辑
摘要:题目链接 Boruvka生成树算法 $Boruvka$算法就是先把每个点看作一个联通块,然后不断在联通块之间找最优的边进行合并。因为每次联通块的数量最少缩小一半。所以合并次数是$log$的 先把所有的点权挂到$trie$树上。然后对于每个联通块进行合并的时候。对于联通块中的每个点都去$trie$上搜 阅读全文
posted @ 2019-01-01 19:26 wxyww 阅读(202) 评论(0) 推荐(0) 编辑
摘要:因为烟花1.0版本被mjt挂到了他的博客里。 这是用一晚上弄的烟花2.1版本 滑动以控制烟花。。 点击月亮切换场景 来这里全屏体验 阅读全文

点击右上角即可分享
微信分享提示