12 2018 档案

摘要:考虑分别计算每个位置作为AA的末尾或者BB的开头的个数 最后乘一乘就是答案 据说是套路的计算AA的方法: 首先枚举A的长度L,然后每L个字符当做一个关键点,这样的话,一个AA包含且只包含相邻两个关键点(记为a,b),而且满足lcp(a,b)+lcs(a,b)-1>=L 手画一下就能看出来 于是SA搞 阅读全文
posted @ 2018-12-30 21:53 Ressed 阅读(235) 评论(0) 推荐(0)
摘要:(并不能)发现29393不是质数,而是等于7*13*17*19 于是可以用四个线段树分别维护模意义下,对x进行一个区间的操作后的值 最后再把这四个的答案用crt拼起来 也可以不crt,而是预处理0~29392的每个情况 为了降低复杂度,预处理模7/13/17/19的幂 注意询问时,要把询问对7/13 阅读全文
posted @ 2018-12-08 21:42 Ressed 阅读(231) 评论(0) 推荐(0)
摘要:中国剩余定理(crt) 求解同余方程组$\{x=a_i (\mod b_i)$,要求$b_i$互质 有公式$x = \sum{a_iM_it_i} , lcm是b的最小公倍数, M_i=lcm/b_i , t_i=M_i^{-1}(\mod b_i)$ 因为感觉被excrt完爆所以看看得了233 扩 阅读全文
posted @ 2018-12-08 21:33 Ressed 阅读(446) 评论(0) 推荐(0)
摘要:最大公因数(欧几里得算法) $gcd(a,b)=gcd(b\%a,a)$(不一定需要a<b) $gcd(0,b)=b$ 扩展欧几里得 寻找$ax+by=gcd(a,b)$的一组解x,y(一定存在整数解) $ax+by=gcd(a,b)=gcd(b\%a,a)=(b-\lfloor\frac{b}{a 阅读全文
posted @ 2018-12-08 21:14 Ressed 阅读(174) 评论(0) 推荐(0)
摘要:题意(考试时看错了对着样例wa了好久..):从树上选k个连通块,使得权值的平均值最大的基础上,选的块数最多 如果不考虑块数最多的限制,肯定是只选一个权值最大的块是最好的 然后只要看这个权值最大的块有多少个不相交的就可以了 做法就是,在dp的时候,一旦找到了和最大权值相等的块,直接统计答案,然后把这一 阅读全文
posted @ 2018-12-08 21:03 Ressed 阅读(253) 评论(0) 推荐(0)
摘要:题意:有两数a,b,每次你可以给定c,d询问a xor c和b xor d的大小关系,最多询问62次($a,b<=2^{30}$),问a和b 考虑从高位往低位做,正在做第i位,已经知道了a和b的前i-1位 这样的话,只要让a、c,b、d的前i-1位相同,就和前i-1位没关系了 考虑在第i位上abcd 阅读全文
posted @ 2018-12-08 20:55 Ressed 阅读(315) 评论(0) 推荐(0)
摘要:题意:给一个数列,你可以进行至多n+1次操作,每次给一个前缀对某数取模或者加某数,使得最后数列严格单增 考虑到因为是前缀和而且还不能加负数,光靠加是不能让前面的小于后面的 所以要让他先在模某数意义下单增,最后再模一下 先钦定好mod,然后从后往前做,这时候a[i]已经定下来,只要给前i个加上某数使得 阅读全文
posted @ 2018-12-08 20:41 Ressed 阅读(314) 评论(0) 推荐(0)
摘要:首先第一眼是一个倍增套线性基,但是$O(Qlog^2Vlog^N)=10^{10}$的复杂度... 即使是st表也只是变成了$O(Nlog^2Vlog^N)$啊 考虑点分治,相对于倍增显著减少了线性基合并(一个往另一个里暴力插)这一O(log^2V)的过程 就是在分治到一个询问的两端点分立于两个子树 阅读全文
posted @ 2018-12-04 20:26 Ressed 阅读(278) 评论(0) 推荐(0)
摘要:一个比较显然的等比数列求和,但有一点问题就是n和m巨大.. 考虑到他们是在幂次上出现,所以可以模上P-1(费马小定理) 但是a或c等于1的时候,不能用等比数列求和公式,这时候就要乘n和m,又要变成模P 所以我们一开始就模P*(P-1)好了... 很大,要用龟速乘 阅读全文
posted @ 2018-12-04 20:18 Ressed 阅读(255) 评论(0) 推荐(0)
摘要:用途 处理关于子集的异或和的问题,比如子集异或和的最大值,或者能不能异或出某个数 原理 从一堆数中处理出一组线性无关(?)的数,使得这些数能异或出的数和原来能异或出的数相同 线性基中,以每个位置为最高位1的数(最多)只有一个,这样就保证了线性无关 做法 依次处理每个数,对于x,从大到小扫描它的每一位 阅读全文
posted @ 2018-12-04 20:13 Ressed 阅读(175) 评论(0) 推荐(0)
摘要:考虑计算每个位置的数作为最小值时有多少种情况 方便起见,以位置为第二关键字比较大小,这样就不会出现“相同的”数 可以方便地计算出以i位置为最小值的区间端点的可行位置:[A,i],[i,B] 这是我选的一个区间,那么另一个区间会有两种情况:在[A,B]的范围内或者不在 不妨只考虑另一个区间在i这个区间 阅读全文
posted @ 2018-12-04 19:49 Ressed 阅读(213) 评论(0) 推荐(0)
摘要:建图((x,y,c,l)表示x到y,费用c,流量l) (S,1,0,K) (i,i+1,0,K) 这个边上的流量,表示i还可以被覆盖的次数 (N,T,0,K) (i,j,w,1)对于权值为w的区间[i,j] 然后跑最大费用最大流 因为没有负权值,所以肯定尽量跑满 阅读全文
posted @ 2018-12-01 19:37 Ressed 阅读(125) 评论(0) 推荐(0)
摘要:看到数据范围,考虑网络流..但考的时候完全不知道怎么建图 考虑流量表示选的点个数,费用表示选点的收益,跑最大费用最大流 那么我用一个点x表示某树中的询问点x,刨去它子孙询问点的子树后的子树 对于树1,连边S->x,流量为x的限定数-孩子询问的限定数,费用为0 对于树2,连边x->T,流量为x的限定数 阅读全文
posted @ 2018-12-01 19:30 Ressed 阅读(340) 评论(0) 推荐(0)
摘要:首先整体二分,问题变成是否存在经过一个点的满足条件的路径 那么我对于每个路径(a,b,lca),在树状数组的dfn[a]++,dfn[b]++,dfn[lca]--,dfn[fa[lca]--] 然后直接查那个点的子树和就行了 阅读全文
posted @ 2018-12-01 19:01 Ressed 阅读(178) 评论(0) 推荐(0)
摘要:设f[i][j]表示在第i个村庄建第j个基站的花费 那么有$f[i][j]=min\{f[k][j-1]+w[k,i]\}$,其中w[k,i]表示在k,i建基站,k,i中间的不能被满足的村庄的赔偿金之和 如果把每个村庄能被满足的区间处理出来,记做$[l_i,r_i]$,那么i,j不能满足的村庄,就是 阅读全文
posted @ 2018-12-01 18:56 Ressed 阅读(260) 评论(0) 推荐(0)
摘要:按照美味值从大到小排序,对于每个询问,我想二分找到一个前缀来满足条件 那么以单价为下标建主席树,维护区间的最大体积和 以及满足这个最大体积需要的价钱 然后二分答案,再在主席树上二分,找到恰好满足的那个位置(肯定是单价越小越好) 复杂度$O(nlog^2n)$ 阅读全文
posted @ 2018-12-01 18:46 Ressed 阅读(130) 评论(0) 推荐(0)
摘要:考虑整体二分,问题就变成了每个(水果)路径有多少个满足条件(权值)的(盘子)子路径 考虑一个盘子(a,b)表示两端点(不妨设dfn[a]<dfn[b]),那么他能接到的水果(u,v)一定满足(不妨设dfn[u]<dfn[v]): 1.如果a是b的祖先,则u在(a的在(b,a)链上的孩子)这个子树外, 阅读全文
posted @ 2018-12-01 18:42 Ressed 阅读(184) 评论(0) 推荐(0)