12 2018 档案

摘要:题目大意:给一个$n$个点的环染色,有$n$中颜色,问有多少种涂色方案是的旋转后本质不同 题解:$burnside$引理:$ans=\dfrac1{|G|}\sum\limits_{g\in G}A_g$ 对于环,有$Polya$定理:$ans=\dfrac1{|G|}\sum\limits_{g\ 阅读全文
posted @ 2018-12-31 15:03 Memory_of_winter 阅读(409) 评论(0) 推荐(0) 编辑
摘要:题目大意:给你一个$n$次多项式$f(x)$,以及$m$个$x_i$,对于$i\in[1,m]$,求$f(x_i)$ 题解:多项式多点求值 令$g(x)=\prod\limits_{i=1}^m(x-x_i)$,求出$R(x)$使得$f(x)=Q(x)\times g(x)+R(x)$。因为当$x= 阅读全文
posted @ 2018-12-31 13:25 Memory_of_winter 阅读(588) 评论(0) 推荐(0) 编辑
摘要:题目大意:有$n$个字符串,求这$n$个字符串中最长的相似公共字串,相似的定义是加上一个数后相同 题解:差分,建广义后缀自动机,然后求出每个点在多少个字符串中出现过,若在$n$个中都出现,就更新答案 卡点:无 C++ Code: 阅读全文
posted @ 2018-12-27 20:40 Memory_of_winter 阅读(116) 评论(0) 推荐(0) 编辑
摘要:题目大意:有一棵$n(n\leqslant2.5\times10^5)$个节点的带边权的树,$m$个询问,每次询问给出$k(\sum\limits_{i=1}^mk_i\leqslant5\times10^5)$个点,要求用最小的代价砍断一些边,使得$1$号点与这$k$个点都不连通,输出最小代价 题 阅读全文
posted @ 2018-12-27 11:43 Memory_of_winter 阅读(146) 评论(0) 推荐(0) 编辑
摘要:题目大意:有两种操作: 题解:用$STL$的$set$,定义区间$A<B$为$A.r<B.l$,这样寻找冲突的区间只需要在$set$中$find$即可,注意删除后$set$指针不可用,需要重新找 卡点:无 C++ Code: 阅读全文
posted @ 2018-12-25 10:40 Memory_of_winter 阅读(127) 评论(0) 推荐(0) 编辑
摘要:题目大意:给你$n,k(n\leqslant10^9,k\leqslant10^6)$,求:$$\sum\limits_{i=1}^ni^k\pmod{10^9+7}$$ 题解:可以猜测是一个$k+1$次的多项式,可以求出$x$在$0,1,2,3,\dots,k+1$时的值,设为$s_0,s_1,\ 阅读全文
posted @ 2018-12-23 15:49 Memory_of_winter 阅读(183) 评论(0) 推荐(0) 编辑
摘要:题目大意:给你三个字符串$A,B,C$,令$L=min(|A|,|B|,|C|)$,对每个$i\in[1,L]$,求出符合$A_{[a,a+i)}=B_{[b,b+i)}=C_{[c,c+i)}$的三元组$(a,b,c)$的个数 题解:先建一棵广义$SAM$,求出每个点可以到达的$A,B,C$的字串 阅读全文
posted @ 2018-12-23 14:52 Memory_of_winter 阅读(192) 评论(0) 推荐(0) 编辑
摘要:题目大意:给你$n$个字符串,对每个字符串求出只在这个字符串中出现的字串的个数 题解:先建广义$SAM$,然后对每个点统计一下它的子树中是不是都是在同一个字符串中的,是的话,就把这个点标成这一个字符串,计算贡献 卡点:无 C++ Code: 阅读全文
posted @ 2018-12-23 12:15 Memory_of_winter 阅读(258) 评论(0) 推荐(0) 编辑
摘要:题目大意:求一个字符串的第$k$大字串,$t$表示长得一样位置不同的字串是否算多个 题解:$SAM$,先求出每个位置可以到达多少个字串($Right$数组),然后在转移图上$DP$,若$t=1$,初始值赋成$Right$数组大小,否则赋成$1$ 卡点:无 C++ Code: 阅读全文
posted @ 2018-12-23 10:26 Memory_of_winter 阅读(185) 评论(0) 推荐(0) 编辑
摘要:题目大意:给你两个字符串,求从两个字符串中各选择一个字串使得这两个字串相同的方案数。 题解:建广义$SAM$,对每个点求出在第一个串中出现次数和第二个串中出现次数,乘起来就行了 卡点:无 C++ Code: 阅读全文
posted @ 2018-12-22 19:36 Memory_of_winter 阅读(142) 评论(0) 推荐(0) 编辑
摘要:题目大意:给你一棵$n$个点的树,最多有$20$个叶子节点,问共有几个不同的子串 题解:广义$SAM$,对每个叶子节点深搜一次,每个节点的$lst$设为这个节点当时的父亲,这样就可以时建出来的$SAM$含有所有的字串 卡点:无 C++ Code: 阅读全文
posted @ 2018-12-22 18:57 Memory_of_winter 阅读(153) 评论(0) 推荐(0) 编辑
摘要:题目大意:给你一个字符串,求其中本质不同的字串的个数 题解:同[洛谷P4070][SDOI2016]生成魔咒,只要最后再输出就行了 卡点:无 C++ Code: 阅读全文
posted @ 2018-12-22 15:49 Memory_of_winter 阅读(226) 评论(0) 推荐(0) 编辑
摘要:题目大意:给一个长度为$n$的字符串,求: $$\sum\limits_{1\leqslant i<j\leqslant n}|suf_i|+|suf_j|-2\times lcp(suf_i,suf_j)$$ 题解:建一棵后缀树,这个式子就成了后缀树上所有后缀之间的距离(后缀树可以把字符串反着加入 阅读全文
posted @ 2018-12-22 15:11 Memory_of_winter 阅读(202) 评论(0) 推荐(0) 编辑
摘要:题目大意:有一个字符串,每次在末尾加入一个字符,问当前共有多少个本质不同的字串 题解:$SAM$,就是问插入这个字符后,多了多少个字串,就是当前这个点的$Right$数组大小。 卡点:无 C++ Code: 阅读全文
posted @ 2018-12-22 13:39 Memory_of_winter 阅读(181) 评论(0) 推荐(0) 编辑
摘要:题目大意:有一棵$n$个点的树,每个点有一个点权,有三种操作: 题解:树剖,发现换根操作比较困难,可以进行一波分类讨论(下面的$lca$以及子树都是在以$1$为根的情况下(其实任意一个固定的点均可) 然后步骤三的减去$root$所在的子树中的找这棵子树可以用倍增来求 卡点:步骤三中只查询了$x$的子 阅读全文
posted @ 2018-12-21 20:21 Memory_of_winter 阅读(248) 评论(0) 推荐(0) 编辑
摘要:题目大意:一个长度为$n(n\leqslant5\times10^5)$的数组,有两个操作: 题解:分块,把每个块排个序(可以把数值为第一关键字,位置为第二关键字),整块的加就块上打$tag$,非整块的就暴力重构,查询就在每个块内求这个数出现位置,直接二分查找就行了。设块大小为$S$,修改复杂度$O 阅读全文
posted @ 2018-12-18 10:49 Memory_of_winter 阅读(220) 评论(0) 推荐(0) 编辑
摘要:题目大意:给定长度为$n-1$的数组$g_{[1,n)}$,求$f_{[0,n)}$,要求: $$f_i=\sum_{j=1}^if_{i-j}g_j\\f_0=1$$ 题解:分治$FFT$博客,发现这道题就是求$f*g=f-1$($f-1$就是没有常数项的$f$),改写一下式子:$$f*g\equ 阅读全文
posted @ 2018-12-17 19:42 Memory_of_winter 阅读(244) 评论(0) 推荐(0) 编辑
摘要:题目大意:给定长度为$n-1$的数组$g_{[1,n)}$,求$f_{[0,n)}$,要求: $$f_i=\sum_{j=1}^if_{i-j}g_j\\f_0=1$$ 题解:直接求复杂度是$O(n^2)$,明显不可以通过此题 分治$FFT$,可以用$CDQ$分治,先求出$f_{[l,mid)}$, 阅读全文
posted @ 2018-12-16 20:33 Memory_of_winter 阅读(225) 评论(0) 推荐(0) 编辑
摘要:题目大意:有一个长度为$n$的$01$串,两个操作: 题解:维护前缀异或和,树状数组即可 卡点:无 C++ Code: 阅读全文
posted @ 2018-12-16 18:29 Memory_of_winter 阅读(182) 评论(0) 推荐(0) 编辑
摘要:题目大意:有$n(n\leqslant5\times10^5)$个数,$m(m\leqslant5\times10^5)$个询问,每个询问问区间$[l,r]$中众数的出现次数 题解:分块,设块大小为$S$,先可以预处理出两两块之间的众数出现次数,复杂度$O(\Big(\dfrac n S\Big)n 阅读全文
posted @ 2018-12-16 15:41 Memory_of_winter 阅读(249) 评论(0) 推荐(0) 编辑
摘要:题目大意:给你一棵带点权的树,要你求出树上一条链,使得这条链的长度乘上这条链上点权最小值最大 题解:点分,可以求出一个点向下每一条链上最小值以及路径长度,对于一个链的端点,假设到这部分子树的重心距离为$dep$,这条链上最小值为$min$,记录每一个最小值的最长链的长度,可以用树状数组维护最大值(这 阅读全文
posted @ 2018-12-16 15:04 Memory_of_winter 阅读(245) 评论(0) 推荐(0) 编辑
摘要:题目大意:多次询问,每次给你$p$询问$2^{2^{2^{\dots}}}\bmod p$ 题解:扩展欧拉定理,求出$\varphi(p)$即可。因为$2^{2^{2^{\dots}}}>>p$,所以其实每一次算的时候都可以直接加上$\varphi(p)$,不用判断 卡点:无 C++ Code: 阅读全文
posted @ 2018-12-14 19:26 Memory_of_winter 阅读(131) 评论(0) 推荐(0) 编辑
摘要:题目大意:给定一个$n(n\leqslant10^5)$序列,$m(m\leqslant10^5)$个询问,每个询问给出$l_1,r_1,l_2,r_2,l_3,r_3$。令$s$为该三个区间的交集的大小,则输出$|[l_1,r_1]|+|[l_2,r_2]|+|[l_3,r_3]|−3|s|$ 题 阅读全文
posted @ 2018-12-14 18:41 Memory_of_winter 阅读(212) 评论(0) 推荐(0) 编辑
摘要:题目大意:求$a^b\bmod m(a\leqslant10^9,m\leqslant10^6,b\leqslant10^{2\times10^7})$ 题解:扩展欧拉定理:$$a^b\equiv\begin{cases}a^{b\bmod{\varphi(p)}} &(a,b)=1\\a^b &( 阅读全文
posted @ 2018-12-13 14:53 Memory_of_winter 阅读(144) 评论(0) 推荐(0) 编辑
摘要:题目大意:有$n$个数,每个数为$s_i$,两个操作: 题解:区间加可以通过树状数组维护,考虑操作二,由扩展欧拉定理可得:$$a^b\equiv\begin{cases}a^{b\bmod{\varphi(p)}} &(a,b)=1\\a^b &(a,b)\not=1,b<\varphi(p)\\a 阅读全文
posted @ 2018-12-13 11:44 Memory_of_winter 阅读(379) 评论(0) 推荐(0) 编辑
摘要:题目大意:给你一张$n(n\leqslant10^3)$个点$m(m\leqslant10^5)$个点的无向无权图,多组询问,每次询问给你一些二元组$(x_i,y_i)$,求有多少个$u$于至少一个二元组满足:$dis(u,x_i)\leqslant y_i$ 题解:对每个点跑一遍$bfs$,求出每 阅读全文
posted @ 2018-12-12 11:51 Memory_of_winter 阅读(272) 评论(0) 推荐(0) 编辑
摘要:题目大意:有$n$个位置,$m$个操作。操作有两种: 题解:树套树,权值线段树套位置线段树,要标记永久化,不然会$TLE$ 卡点:没有标记永久化,$TLE$,然后处理$tag$部分写错 C++ Code: 阅读全文
posted @ 2018-12-11 20:26 Memory_of_winter 阅读(232) 评论(0) 推荐(0) 编辑
摘要:题目大意:给一棵$n(n\leqslant2\times10^4)$个点的树,$m(m\leqslant2\times10^5)$个询问,每次问$x->y$路径上的树异或最大值 题解:可以点分治,线性基合并即可 卡点:一处查询的地方写成了$maxn$ C++ Code: 阅读全文
posted @ 2018-12-10 20:09 Memory_of_winter 阅读(206) 评论(0) 推荐(0) 编辑
摘要:题目大意:有$n(n\leqslant4\times10^4)$个数,$m(m\leqslant5\times10^4)$个询问,每次问区间$[l,r]$内的众数,若相同输出最小的,强制在线。 题解:先离散化,分块,设块大小为$S$,可以在$O(\dfrac n S n)$的复杂度内预处理出每两个块 阅读全文
posted @ 2018-12-08 09:11 Memory_of_winter 阅读(179) 评论(0) 推荐(0) 编辑
摘要:题目大意:有$n$个数$s_i$,两个操作: 1. $add\;l\;r\;d:$把区间$[l,r]$加上$d$(保证任何时刻$s_i\leqslant10^4$)2. $count\;l\;r:$询问区间$[l,r]$中有多少个数是幸运数字(幸运数字的定义是只包含$4$和$7$两个数字) 题解:分 阅读全文
posted @ 2018-12-07 19:44 Memory_of_winter 阅读(496) 评论(0) 推荐(0) 编辑
摘要:题目大意:给定一个$n$次多项式$F(x)$和一个$m$次多项式$G(x)$,请求出多项式$Q(x),R(x)$,满足: 1. $Q(x)$次数为$n-m$,$R(x)$次数小于$m$2. $F(x)=Q(x)\times G(x)+R(x)$ 题解:多项式除法。$$F(x)\equiv Q(x)G 阅读全文
posted @ 2018-12-07 17:40 Memory_of_winter 阅读(179) 评论(0) 推荐(0) 编辑
摘要:题目大意:给一个$n$个点的完全图,第$i$个点有点权$v_i$,一条边$x-y$的边权为$v_x\oplus v_y$,求最小生成树 题解:明显$Kruskal$和$Prim$都会$TLE$,有一种别的生成树的算法为$Sollin$。它对棵树找到离它最近的不连通的一棵树,对每棵树找好后若可以连这一 阅读全文
posted @ 2018-12-06 11:30 Memory_of_winter 阅读(154) 评论(0) 推荐(0) 编辑
摘要:题目大意:有$n$个点的树,第$i$个节点有一个权值$h_i$,$m$个骑士,第$i$个骑士攻击力为$v_i$,一个骑士可以把从它开始的连续的父亲中比它小的节点攻破,攻破一个节点可以把攻击力加或乘一个数(乘的数大于$0$)(每个骑士独立),问每个骑士可以攻破多少个点,每个点会阻挡住多少个骑士。 题解 阅读全文
posted @ 2018-12-05 19:40 Memory_of_winter 阅读(164) 评论(0) 推荐(0) 编辑
摘要:题目大意:把$n(n\leqslant30)$个数分成两组,两组个数最多相差$1$,求出两组元素差的绝对值最小使多少 题解:模拟退火 卡点:$\exp$中的两个数相减写反,导致$\exp(x)$中的$x>0$,$\exp(x)>1$,相当于一直接受生成的解 C++ Code: 阅读全文
posted @ 2018-12-03 20:30 Memory_of_winter 阅读(197) 评论(0) 推荐(0) 编辑
摘要:题目大意:有一个$n\times m$的房间,一些位置是房间,另一些位置是柱子,相邻两个房间之间有墙,问有多少种方案可以打通一些墙把所有房间连成一棵树,柱子不可以打通 题解:矩阵树定理,把房间当点,墙当边,一张图的生成树个数为每个点的度数矩阵减去邻接矩阵的任意一个代数余子式的值。 模数是$10^9$ 阅读全文
posted @ 2018-12-03 19:26 Memory_of_winter 阅读(156) 评论(0) 推荐(0) 编辑
摘要:题目大意:给你$n$个点坐标,要你求出圆心 题解:随机化,可以随机一个点当圆心,然后和每个点比较,求出平均距离$r$,如果到这个点的距离大于$r$,说明离这个点远了,就给圆心施加一个向这个点的力;若小于$r$,说明近了,就施加一个远离这个点的力。所有点比较完后,把假设的圆心按合力方向移动一个距离,距 阅读全文
posted @ 2018-12-02 17:06 Memory_of_winter 阅读(262) 评论(2) 推荐(0) 编辑
摘要:题目大意:给你$n$个点,求出其中最远点的距离 题解:求出凸包,最远点一定都在凸包上,可以对每条边求出最远的点(可以双指针),然后求出和这条边的端点的距离,更新答案 卡点:最开始对每个点求出最远点,但这样并不可以双指针怎么搞。 C++ Code: 阅读全文
posted @ 2018-12-02 11:11 Memory_of_winter 阅读(155) 评论(0) 推荐(0) 编辑
摘要:题目大意:有$n$个数,每个数为$0$或$1$,给你其中一些关系,一个关系形如其中几个数的异或和是多少,问最少知道前几个关系就可以得出每个数是什么,并输出每个数 题解:异或方程组,和高斯消元差不多,就是把加减改成了异或。 卡点:用$bitset$优化,输出时输反了 C++ Code: 阅读全文
posted @ 2018-12-01 10:57 Memory_of_winter 阅读(153) 评论(0) 推荐(0) 编辑