12 2018 档案

摘要:"传送门" 首先很显然,从人形起点出发能到的点和狼形能到终点的点都是一个联通块,如果能从起点到终点则说明这两个联通块有交 这个时候可以请出我们的克鲁斯卡尔重构树,即对原图分别建两棵重构树,一棵边权为两端点较小值,边权从大到小排序后构建,另一棵反过来,所以构完后第一棵重构树某个点权值要小于等于子树内的 阅读全文
posted @ 2018-12-27 19:31 ✡smy✡ 阅读(225) 评论(5) 推荐(0)
摘要:"传送门" ~~毒瘤出题人,卡我常数~~ 如果后缀排序后将两两之间height$\ge k$的后缀放在一组,那么每次询问的答案就是$\sum_{i} \binom{num "i]}{2}$(num[i]是第i组后缀在[l,r]之间的后缀个数),这个就是~~[小z的袜子" ~~.不过注意块大小要开成$ 阅读全文
posted @ 2018-12-23 21:37 ✡smy✡ 阅读(160) 评论(0) 推荐(0)
摘要:"传送门" 我是真的弱,推式子只能推一半 下面假设$n define LL long long define ldb long double define il inline define re register using namespace std; const int N=1e6+10,mod 阅读全文
posted @ 2018-12-20 22:40 ✡smy✡ 阅读(151) 评论(0) 推荐(0)
摘要:"传送门" 其实要求的东西就是后缀树上所有叶子对的距离之和.构建反串SAM,然后构建parent树(原串后缀树),然后就是树型dp的事,~~具体细节留给读者自行思考~~ ~~那个,不会看代码啊~~ cpp include define LL long long define il inline de 阅读全文
posted @ 2018-12-16 20:16 ✡smy✡ 阅读(128) 评论(0) 推荐(0)
摘要:"传送门" 对原串构建SAM,然后在上面走出这个串,~~联系Splay求第k大~~,需要知道每个状态往后走总共有多少子串,这个可以按照拓扑序逆序dp得到(至于dp初始状态,本质相同子串算一个就为1,否则为endpos的大小) 阅读全文
posted @ 2018-12-16 19:29 ✡smy✡ 阅读(134) 评论(2) 推荐(0)
摘要:"传送门" upd 19.4.24: WC这个做法真的有问题,不往回跳会WA是因为一开始跳到了S[1...l 1]所对应的点,然后往后接字符的时候可能会因为不在正确的endpos中,然后往回跳过头,其实一开始只要从起点开始跳就行了 Orz @Itst ddw 这题写死我了,因为一点点~~鬼会注意到的 阅读全文
posted @ 2018-12-15 15:57 ✡smy✡ 阅读(180) 评论(2) 推荐(0)
摘要:"传送门" 我是真的弱,看题解都写了半天,,, ~~这题答案应该是$\sum_{i=1}^{a}\binom{a}{i}\sum_{j=0}^{min(b,i 1)}\binom{b}{j}$~~ 上面那个式子无法化简qwq 把A和b的抛硬币情况连在一起,记成一个01串,那么如果某个串代表B获胜,那 阅读全文
posted @ 2018-12-12 14:19 ✡smy✡ 阅读(147) 评论(0) 推荐(0)
摘要:"传送门" 我太弱了,只会乱搞,~~正解是不可能正解的,这辈子不可能写正解的,太蠢了又想不出什么东西,就是乱搞这种东西,才能维持得了做题这样子~~ 考虑将询问离线,按右端点排序,并且预处理出每个位置往前面第一个大于这个数的位置,记为$fa_i$ 如果加入一个右端点$i$,那么可以加上贡献的左端点有以 阅读全文
posted @ 2018-12-11 17:30 ✡smy✡ 阅读(169) 评论(0) 推荐(0)
摘要:"传送门" $Spaly:$~~???~~ 考虑在暴力模拟的基础上优化 如果要插入一个数,那么根据二叉查找树的性质,这个点一定插在他的前驱的右子树或者是后继的左子树,可以利用set维护当前树里面的数,方便查找前驱后继.不过具体要插到前驱处还是后继处呢?可以把前驱后继在树上的lca找出来,看一下新点如 阅读全文
posted @ 2018-12-11 17:04 ✡smy✡ 阅读(173) 评论(2) 推荐(0)
摘要:"传送门" 这题tm把AC自动机叉掉了,,, 只能考虑别的做法 把所有串连在一起,不同串的交界处加入一些不同的字符,然后求出sa数组和height数组,现在一个询问的答案就是和那个询问串的lcp正好为询问串长度的原串个数,而这在把后缀排好序后是一个区间,每个原串答案为包含这个原串的某个点的区间个数 阅读全文
posted @ 2018-12-11 08:46 ✡smy✡ 阅读(151) 评论(0) 推荐(0)
摘要:"传送门" 好妙蛙 即串$s$长度为$n$首先考虑如果一个长度为$len$的$border$存在,当且仅当对所有$i\in[1,len],s[i]=s[n len+i]$,也就是所有模$n len$同余的所有位置上的字符要相同,如果存在一对(0,1),他们之间的下标之差为$x$,则对于所有的$y|x 阅读全文
posted @ 2018-12-07 09:31 ✡smy✡ 阅读(123) 评论(0) 推荐(0)
摘要:"传送门" 这一类题都要考虑推式子 首先推出题目要求的式子,枚举正好有$s$个颜色的种类(范围$[0,p=min(\lfloor\frac{n}{s}\rfloor,m)]$),然后对于后面的颜色可能也有数量为$s$的,容斥一下即可,即$$ans=\sum_{k=0}^{p}w_k \binom{m 阅读全文
posted @ 2018-12-07 08:58 ✡smy✡ 阅读(194) 评论(0) 推荐(0)
摘要:"传送门" 这一类题都要考虑推式子 首先,原式为$$f(n)=\sum_{i=0}^{n}\sum_{j=0}^{i}S(i,j) 2^j j!$$ 可以看成$$f(n)=\sum_{j=0}^{n}2^j j!\sum_{i=j}^{n}S(i,j)$$ 又因为$$S(i,j)=\frac{1}{ 阅读全文
posted @ 2018-12-07 08:39 ✡smy✡ 阅读(131) 评论(0) 推荐(0)
摘要:"传送门" ~~nmyzd,mgdhls,bnmbzdgdnlql,a,wgttxfs~~ 对于一个点$a$,点$b$只有可能是他的祖先或者在$a$子树里 如果点$b$是$a$祖先,那么答案为a子树大小$sz_a 1$ 否则,答案为$sz_b 1$ 加上$k$的限制后,如果根节点1的深度$de_1= 阅读全文
posted @ 2018-12-06 22:11 ✡smy✡ 阅读(183) 评论(0) 推荐(0)
摘要:"传送门" 首先化简原式$$F_j=\sum_{ij}\frac{q_iq_j}{(i j)^2},E_j=F_j/q_j$$ 把所有$q_j$提出来,则显然$$E_j=\sum_{ij}\frac{q_i}{(i j)^2}$$$$E_j=... \frac{q_{j 2}}{2^2} \frac 阅读全文
posted @ 2018-12-05 22:30 ✡smy✡ 阅读(102) 评论(0) 推荐(0)
摘要:"传送门" 这题就是~~普及暴力模拟板子~~FFT板子,只要把多项式读入进来FFT一下就好了(不会的右转P3803) 重点是读入,~~我本以为这个字符串里到处都有空格,~~这里提供一种简单思路: 因为里面可能有空格,所以用while和scanf读入连续的一段字符,如果读到数字就把这个系数(以及 可能 阅读全文
posted @ 2018-12-05 22:14 ✡smy✡ 阅读(175) 评论(0) 推荐(0)
摘要:"传送门" 还是放个链接让泥萌去学一下把 "orzYYB" 题目中要求的$f_{x,j}$,转移是$f_{x,j}=\sum_{y=son_x} f_{y,j 1}$,所以这个东西可以用长链剖分优化,利用指针,每个点直接继承重儿子信息,轻儿子的话暴力合并,一边合并一边更新答案 cpp include 阅读全文
posted @ 2018-12-05 11:48 ✡smy✡ 阅读(145) 评论(0) 推荐(0)
摘要:"传送门" 因为$Splay$可以$O(logn)$维护区间,所以直接对每一行维护第一个元素到倒数第二个元素的$Splay$,最后一列维护一个$Splay$,每次把选出来的点删掉,然后把那一行对应的在最后一列$Splay$的点接在这一行后面,然后把选出来的点接在最后一列最后 注意这里要动态开点,即一 阅读全文
posted @ 2018-12-05 11:24 ✡smy✡ 阅读(107) 评论(0) 推荐(0)
摘要:"传送门" 很久以前xzz大佬就喊我做这题,结果现在才做qwq 因为要在序列中插入,所以直接用$Splay$维护这个串的哈希值,插入就直接把那个点插♂进去,修改就把点旋到根,然后修改和pushup,询问的话可以考虑二分,check就看两个对应区间哈希值是否相等 阅读全文
posted @ 2018-12-05 11:18 ✡smy✡ 阅读(125) 评论(0) 推荐(0)
摘要:"传送门" 感觉要死在$Splay$里了 orz 这题用$Splay$维护这个序列,其中的第$k$大点代表这个序列的第$k$个数 第一个操作,先把那个数所在的点旋到根,然后把整个根的左子树接到右子树中最小的点,记得$splay$维护整棵树 第二个操作类似,把第一个操作反过来就行 第三个本质是两个相邻 阅读全文
posted @ 2018-12-03 22:22 ✡smy✡ 阅读(141) 评论(0) 推荐(0)
摘要:"传送门" 毒瘤lxl 本质是莫队,关键是怎么处理询问 这里需要开两个bitset(记为$b1,b2$),分别存$x$和$n x$是否出现 对于询问1,即$x y=z$,由于$y=x z$,所以要求$x$和$x z$同时存在,相当于$b1\&(b1 (n z))$是否有1 询问3的话,$O(\sqr 阅读全文
posted @ 2018-12-03 17:04 ✡smy✡ 阅读(174) 评论(0) 推荐(0)
摘要:"传送门" 同样是树上莫队 只不过要求一个集合的mex,这里可以使用分块,可以在根号时间内得出解 cpp / Problem: 4129 User: star_magic_young Language: C++ Result: Accepted Time:748 ms Memory:8712 kb 阅读全文
posted @ 2018-12-03 16:49 ✡smy✡ 阅读(162) 评论(0) 推荐(0)
摘要:"传送门" 这种题显然要用树上莫队 何为树上莫队?~~就是在树上跑莫队算法~~就是先把树分块,然后把询问离线,按照左端点所在块为第一关键字,右端点所在块为第二关键字,时间戳(如果有修改操作)为第三关键字排序,然后依次处理.树上莫队要每个点记录是否访问,移动端点时需要把移动前和移动后的点之间的路径上的 阅读全文
posted @ 2018-12-03 16:33 ✡smy✡ 阅读(146) 评论(0) 推荐(0)
摘要:"传送门" 做法是dfs整棵树,当访问一个点$x$时,先访问儿子,若某个时刻子树大小$\ge b$时,就把那些点放在一个省里,省会记为$x$,访问完儿子再把$x$加入栈.最后栈中剩余的没加入任何省的点加入最后一个省 (这就叫做树分块) 正确性的话,首先前面的省大小$\le 2b$,然后在最后栈中剩余 阅读全文
posted @ 2018-12-03 16:22 ✡smy✡ 阅读(134) 评论(0) 推荐(0)
摘要:"传送门" ~~无脑暴力+O2=AC~~ 题目要统计距离两两相等的三个点的组数,这三个点之间显然有一个点,并且这三个点到这个点的距离都相同.所以枚举中间这个点作为根,然后bfs整棵树,对于每一层,把以根的某个儿子的子树中在这一层点的数量统计出来,那么这样三元组的数量就是在这些点里面选3个点,并且分别 阅读全文
posted @ 2018-12-02 22:09 ✡smy✡ 阅读(138) 评论(0) 推荐(0)