12 2018 档案

摘要:题面 题解:因为异或不太好处理,,,因此按位来算,这样最后的答案就是每一位上的值乘对应的权值再求和。本着期望要倒退的原则,,,我们设$f[i]$表示从$i$到$n$,xor和为1的概率。那么观察$xor$的规则:1 xor 1 = 00 xor 1 = 1 > 当xor 1时,结果为1的概率 = 原 阅读全文
posted @ 2018-12-31 15:52 ww3113306 阅读(189) 评论(0) 推荐(0)
摘要:题意:有一个 $n * n$ 的网格,其中 $m$ 个格子上涂了色。每次随机选择一个格子涂色,允许重复涂,求让网格每一行每一列都至少有一个格子涂了色的操作次数期望。题解:,,这种一般都要倒推才行。设$f[i][j]$表示还有$i$行,$j$列未满足的情况下的期望次数。因为每次选择都是完全随机,不受其 阅读全文
posted @ 2018-12-28 19:58 ww3113306 阅读(379) 评论(0) 推荐(0)
摘要:此题在bzoj是权限题,,,所以放另一个oj的链接 题解: 因为期望线性可加,所以可以对每个方格单独考虑贡献。每个方格的贡献就为至少被粉刷过一次的概率×1(每个格子的最大贡献就是1...)每个方格至少被粉刷过一次的概率=1 - 一次都没被粉刷过的概率因为每次选择都不互相影响,因此我们实际上只需要计算 阅读全文
posted @ 2018-12-27 21:45 ww3113306 阅读(227) 评论(0) 推荐(0)
摘要:题面 题意:n个球,2种颜色,可能有0~n个红球,每种情况的概率相同。现在从箱子里取出了$p$个球,其中有$Q$个是红球,问现在再取一个球是红球的概率为多少?题解:因为0 ~ n的概率相同,所以每个球是红色的概率不互相独立。设A表示下一个球是红色这个事件,B表示取了$p$个球,有$Q$个红球这个事件 阅读全文
posted @ 2018-12-27 19:12 ww3113306 阅读(168) 评论(0) 推荐(0)
摘要:求$\sum_{i = 1}^{n} \sum_{j = 1}^{i} [lcm(i, j) \le n]$因为这样不好求,我们改成求$\sum_{i = 1}^{n} \sum_{j = 1}^{n} [lcm(i, j) \le n]$.这样求出来的值把除了(i, i)这样的点对以外所有点对都重 阅读全文
posted @ 2018-12-25 19:46 ww3113306 阅读(273) 评论(0) 推荐(0)
摘要:题意:求$\sum_{i = 1}{n}\sum_{j = 1}{n}lcm(i, j)$. 题解:虽然网上很多题解说用mu卡不过去,,,不过试了一下貌似时间还挺充足的,。。也许有时间用phi试试? 因为是用的莫比乌斯函数求的,所以推导比大部分题解多。。。而且我写式子一般都比较详细,所以可能看上去很 阅读全文
posted @ 2018-12-24 00:27 ww3113306 阅读(360) 评论(1) 推荐(0)
摘要:BSGS: 求合法的$x$使得$a ^ x \quad mod \quad p = b$ 先暴力预处理出$a^0,a^1,a^2.....a^{\sqrt{p}}$ 然后把这些都存在map里 : $map[a^x] = x$ 一个合法的x满足$x = k\sqrt{p} + l$使得$a^x = b 阅读全文
posted @ 2018-12-17 20:20 ww3113306 阅读(152) 评论(0) 推荐(0)
摘要:二项式反演 如果有$g_{i} = \sum_{j = 1}^{i} \binom{i}{j}f_{j} \Longleftrightarrow f_{i} = \sum_{j = 1}^{i}( 1)^{i j} \binom{i}{j}g_{j}$ 证明: 先将1式带入2式,得到 $$f_{i} 阅读全文
posted @ 2018-12-13 16:20 ww3113306 阅读(1163) 评论(0) 推荐(0)
摘要:扩展欧几里得是在求这么一个东西: 问: 已知$a, b$,求解一组(x, y)使得$xa + yb = gcd(a. b)$成立。 答: 设有方程$$x_{1}b + y_{1}(a \% b) = gcd(b, a \% b)$$ 则$$x_{1}b + y_{1}(a \lfloor{\frac 阅读全文
posted @ 2018-12-09 14:15 ww3113306 阅读(205) 评论(0) 推荐(0)
摘要:题面:洛谷 题解: 观察到L是可二分的,因此我们二分L,然后就只需要想办法判断这个L是否可行即可。 因为要尽量使L可行,因此我们需要求出对于给定L,这个串最多能匹配上多少字符。 如果我们可以对每个位置i求出g[i]表示以这个位置为结尾,向前最多匹配多少位,就可以快速得知任意区间[l, r]是否可以被 阅读全文
posted @ 2018-12-04 22:49 ww3113306 阅读(161) 评论(0) 推荐(0)
摘要:题面:洛谷 题解: 因为对于原串的每个长度不一定等于len的拆分而言,如果合法,它将只会被对应的子串统计贡献。 所以子串这个限制相当于是没有的。 所以我们只需要对于每个位置i求出f[i]表示以i为开头的形如BB这样的串的个数,g[i]表示以i为结尾的形如AA这样的串的个数即可。 考虑分别处理这2个数 阅读全文
posted @ 2018-12-04 22:38 ww3113306 阅读(199) 评论(0) 推荐(0)
摘要:题面:洛谷 题解: 我们暴力维护当前所有队伍内的所有子串(长度k = 1 ~ 50)的出现次数。 把每个子串都用一个hash值来表示,每次改变队伍形态都用双向链表维护,并暴力更新出现次数。 现在考虑复杂度。 如果只有连接,没有断开,那么复杂度为不同的子串个数:50n(注意只要O(n)预处理前缀和后缀 阅读全文
posted @ 2018-12-04 22:26 ww3113306 阅读(171) 评论(0) 推荐(0)
摘要:题面:洛谷 题解: 做法。。。。非常暴力。 因为要求的编辑距离最多只有1,所以我们直接枚举对那个位置(字符)进行操作,进行什么样的操作,加入/修改/删除哪个字符,然后暴力枚举hash判断即可, 1 #include<bits/stdc++.h> 2 using namespace std; 3 #d 阅读全文
posted @ 2018-12-04 22:18 ww3113306 阅读(233) 评论(0) 推荐(0)
摘要:题面:洛谷 题解: 如果我们对这些小串建出AC自动机,那么我们所求的大串就是要求满足遍历过所有AC自动机上的叶子节点,且经过步数最少的串。如果有多个步数相同的串,要输出字典序最小的串。 在AC自动机上DP。 因为我们要求所求串内要出现所有给定小串,而小串个数较少,因此我们考虑状压,然后保存下val[ 阅读全文
posted @ 2018-12-04 22:15 ww3113306 阅读(545) 评论(0) 推荐(0)
摘要:题面:洛谷 题解: 其实还可以用AC自动机做,但是没调出来,,,不知道发生了什么。。。 AC自动机做法如下: 观察到如果我们对给定的每个串建AC自动机,那么直接拿大串在上面匹配,如果遇到了一个单词的终止节点,假设当前大串的位置是i,匹配到的节点是j,那么这个单词覆盖了 [i - dep[j] + 1 阅读全文
posted @ 2018-12-04 22:06 ww3113306 阅读(162) 评论(0) 推荐(0)
摘要:题面:洛谷 题解: 题意:给定串,对于每个前缀求有多少本质不同的子串。 我们对这个串建后缀自动机,每加入一个字符就更新一次答案,更新一次输出一次。 对于后缀自动机上的每个状态,因为以[MINS, MAXS]中的每个值作为长度都可以表示一个不同的子串,所以这个状态的贡献就是这个区间的长度。 因此建的时 阅读全文
posted @ 2018-12-04 21:51 ww3113306 阅读(123) 评论(0) 推荐(0)
摘要:题面:洛谷 题解: 我们对给定串建AC自动机,因为串个数较小,我们考虑状压。 设f[i][j][k]表示走了i步,当前在j号节点上,状态为k的方案数。 同时AC自动机上每个点的val都是对应的到达这个点后可以新增的状态。 每次枚举下一个字符即可转移,在建完自动机之后,记得把fail树上对应的链上的点 阅读全文
posted @ 2018-12-04 21:46 ww3113306 阅读(245) 评论(0) 推荐(0)
摘要:题面:洛谷(带翻译) 题解: 直接求相交不太好求,所以考虑求不相交的回文串对数。 设ll[i]表示以i为开头的回文串个数,rr[i]表示结尾<=i的回文串个数。 然后不相交的回文串对数显然就是对于每个$rr[i - 1] \cdot ll[i]$求一次和。 最后再用全集减去不相交的回文串对数即可求出 阅读全文
posted @ 2018-12-04 21:36 ww3113306 阅读(177) 评论(0) 推荐(0)
摘要:题面:洛谷 题解: 我们考虑,如果可以将环上每个长度为len的串都提取出来,再做个排序,那这题我们就做出来了! 但是提取$n^2$,怎么办? 考虑破环成链,再扩充为原来的2倍。 然后直接做后缀排序,把长度大于len的串按排序结果顺次列下来,对于每个后缀取出前len个字符构成串,最后得到的就是我们要的 阅读全文
posted @ 2018-12-04 21:27 ww3113306 阅读(166) 评论(0) 推荐(0)
摘要:题面: 洛谷 题解: 首先我们需要知道一个性质,串s的最小循环节 = len - next[len].其中next[len]表示串s的一个最长长度使得s[1] ~ s[next[len]] == s[len - next[len] + 1] ~ s[len](详细定义参见KMP) 至于为什么是成立的 阅读全文
posted @ 2018-12-04 21:21 ww3113306 阅读(287) 评论(0) 推荐(0)
摘要:题面:洛谷 题解: 还是这个性质:对于每个串而言,本质不同的回文串最多只有O(n)个。 所以我们先求出这O(n)个本质不同的回文串,然后对整个串求一次sa。 然后对于每个回文串,求出它的出现次数,更新答案即可。 如何用后缀数组求一个串的出现次数? 因为每个串都必然是某个后缀的前缀。因此我们先找到这个 阅读全文
posted @ 2018-12-04 21:00 ww3113306 阅读(211) 评论(0) 推荐(0)
摘要:题面: 洛谷:[SHOI2011]双倍回文‘ 题解: 首先有一个性质,本质不同的回文串最多O(n)个。 所以我们可以对于每个i,求出以这个i为结尾的最长回文串,然后以此作为长串,并判断把这个长串从中间劈开后左边的一半是否也是一个回文串(判断左边那半的中点的回文半径是否可以跨过当前长串的中点)。 复杂 阅读全文
posted @ 2018-12-04 20:51 ww3113306 阅读(166) 评论(0) 推荐(0)
摘要:题面: 洛谷 一句话题意:找前k大回文串(不要求本质不同) 题解: 我们进行一遍manacher即可求出对于每个回文中心而言的最长回文半径。 我们考虑求出f[i]表示回文半径为i的回文串的个数。 那么对于一个i而言,它可以对哪些长回文半径产生贡献呢? [1, r[i]]。(这个应该是很明显的) 因此 阅读全文
posted @ 2018-12-02 00:22 ww3113306 阅读(159) 评论(0) 推荐(0)
摘要:题面: 洛谷 题解: 很久之前做的题了,只不过之前一直90.。。。最近才发现是哪里写错了。 我们对字符集建AC自动机。 首先考虑一个暴力的做法,把文章当做一个长串,直接在自动机上跳,但是我们会发现,这样的复杂度可能退化到$n^2$. 因为对于一个类似于aaaaaaaaaaaaaaaa这样的串而言,一 阅读全文
posted @ 2018-12-02 00:17 ww3113306 阅读(156) 评论(0) 推荐(0)

知识共享许可协议
本作品采用知识共享署名-非商业性使用-禁止演绎 3.0 未本地化版本许可协议进行许可。