继续学吧

emmm
私信 关注
回来了吗
码龄3年

AFO

  • 67,420
    被访问量
  • 280
    原创文章
  • 29,727
    作者排名
  • 28
    粉丝数量
  • 于 2018-01-01 加入CSDN
获得成就
  • 获得90次点赞
  • 内容获得34次评论
  • 获得45次收藏
荣誉勋章
TA的专栏
  • ——图论——
    26篇
  • 并查集
    7篇
  • 拓扑排序
    6篇
  • 环套树
    1篇
  • tarjan算法
    4篇
  • 二分图
    3篇
  • 最大独立集
    1篇
  • 网络流
    3篇
  • 0/1分数规划
    2篇
  • 2-sat
    1篇
  • 仙人掌
    2篇
  • 差分约束
    1篇
  • ——动态规划——
    19篇
  • 状压dp
    9篇
  • 数位dp
    5篇
  • 树形dp
    9篇
  • 区间dp
    1篇
  • 分层图DP
    3篇
  • 动态DP
    2篇
  • 斜率优化DP
    2篇
  • 数据结构优化DP
    2篇
  • ——数据结构——
    3篇
  • 分块
    2篇
  • 莫队算法
    2篇
  • 线段树
    14篇
  • 树状数组
    7篇
  • 单调栈
    6篇
  • 树链剖分
    10篇
  • 可持久化线段树
    1篇
  • 平衡树
    7篇
  • LCT
    7篇
  • 长链剖分
  • ——数论、数学——
    17篇
  • 素数
    3篇
  • 高斯消元
    2篇
  • 概率期望
    10篇
  • 鸽笼原理
    1篇
  • 置换群
    1篇
  • 容斥
    5篇
  • BSGS算法
    1篇
  • striling数
    2篇
  • 矩阵树定理
    4篇
  • 约瑟夫环
    1篇
  • 组合数学
    7篇
  • 欧拉定理
    1篇
  • 反演
    4篇
  • 二次剩余
    2篇
  • 线性基
    1篇
  • Pollard Rho
    1篇
  • 计算几何
  • ——字符串——
    4篇
  • AC自动机
    1篇
  • 哈夫曼树
    1篇
  • 哈希
    2篇
  • kmp
    1篇
  • trie树
    2篇
  • manacher
    3篇
  • 后缀数组
    14篇
  • 后缀自动机
    3篇
  • ——其他算法——
    1篇
  • 搜索
    7篇
  • 贪心
    16篇
  • 倍增
    4篇
  • RMQ
    1篇
  • 整体二分
    4篇
  • 悬线法
    2篇
  • 模拟
    2篇
  • 点分治
    3篇
  • 序列自动机
    2篇
  • 三分
    1篇
  • 链表
    3篇
  • 高精度
    2篇
  • bitset
  • 随机化
  • ——多项式——
    6篇
  • FMT
    2篇
  • FFT
    12篇
  • NTT
    5篇
  • FWT
    3篇
  • 拉格朗日插值
    2篇
  • 生成函数
    2篇
  • ——杂类——
    1篇
  • 笔记
    11篇
  • 模拟赛
    19篇
  • 文摘
  • 收藏
    1篇
  • 随笔
    2篇
  • 模板
    9篇
  • 卡特兰数
  • stern brocot tree
  • 欧几里得算法
  • min_25筛
    1篇
  • 树套树
  • 中国剩余定理
  • 李超线段树
    1篇
  • 矩阵
    1篇
  • 虚树
    2篇
  • 单调队列优化DP
    1篇
  • 可持久化并查集
    1篇
  • prufer序列
    1篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

Prufer序列+高精度--bzoj1005: [HNOI2008]明明的烦恼

传送门话说这还是我第一道关于pruferpruferprufer序列的题。。。长度n−2n-2n−2的pruferpruferprufer序列可以唯一表示一棵nnn个节点的树,而且每个节点在序列中出现次数都是d[i]−1d[i]-1d[i]−1所以如果给定每个点的d[i]d[i]d[i],所有不同的树就是(n−2)!∏i=1n(d[i]−1)!\frac{(n-2)!}{\prod_{i=1...
原创
102阅读
0评论
1点赞
发布博客于 2 年前

【模板】可持久化并查集

突然想起来大家都会的可持久化并查集我还不会,所以来学一下qwqqwqqwq感觉可持久化并查集就是把主席树上的点的存储信息改了一下。。其他也没什么不同的,查询一个点的父亲的时候是log2nlog^2nlog2n的,修改啥的都是lognlognlogn,总复杂度是mlog2nmlog^2nmlog2n,空间是mlognmlognmlogn然而,,,看了一个dalao的博客之后觉得事情有那么一点点...
原创
109阅读
0评论
2点赞
发布博客于 2 年前

单调队列优化dp--bzoj5185: [Usaco2018 Jan]Lifeguards

传送门luoguluoguluogu上据说有一道这个题的弱化版,把删kkk个改成了删111个,那个大概线段树之类的随便做一下就好了这道题可以先把包含的都去掉,所有线段就是相交或者不相交的了,然后考虑用dpdpdp解决,设f[i][j]f[i][j]f[i][j]表示到第iii个线段,iii必须留下,之前删掉了jjj条线段的最长覆盖长度,则f[i][j]=f[x][j−(i−x−1)]+ri−...
原创
284阅读
0评论
3点赞
发布博客于 2 年前

后缀自动机--bzoj4032: [HEOI2015]最短不公共子串

传送门一个题=四个题T1这就是对于两个串上的问题通常套路就是对一个建后缀自动机另一个在上面跑,所以对BBB建出后缀自动机然后枚举AAA的子串开头跑就行了,复杂度O(n2)O(n^2)O(n2)T2有一个东西叫做序列自动机,但其实一点也不自动,也没有自动机该有的样子对一个串从后往前记录每个字符出现的最近位置,然后用一个pre[i][j]pre[i][j]pre[i][j]表示iii位置往...
原创
97阅读
0评论
1点赞
发布博客于 2 年前

广义后缀自动机--bzoj3926: [Zjoi2015]诸神眷顾的幻想乡

因为叶子只有202020个,所以把每个叶子当作根然后把从根开始的所有子串都插入一个广义后缀自动机,这样就可以把所有串取到,每次插入的时候记录一下fafafa是哪个,从那个开始插就好了这个要求不同子串个数要用∑i=1cntlen[i]−len[fai]\sum_{i=1}^{cnt}len[i]-len[fa_i]∑i=1cnt​len[i]−len[fai​]因为faifa_ifai​是iii...
原创
100阅读
0评论
1点赞
发布博客于 2 年前

虚树+树形DP--luoguP4426 [HNOI/AHOI2018]毒瘤

传送门虚树毒瘤题首先注意到mmm只比nnn大101010,所以可以随便找个生成树,把mmm多出来的边上的点都拎出来建一个虚树,可以枚举每条边的深度较浅的那个点选不选,在虚树上树形dpdpdp,然后发现虚树上父亲到儿子的系数是不变的,所以可以树形dpdpdp预处理出来k[u][0/1][0/1]k[u][0/1][0/1]k[u][0/1][0/1]表示uuu到faufa_ufau​中fauf...
原创
159阅读
0评论
2点赞
发布博客于 2 年前

min_25筛(学习笔记)

之前考试就学了一下min_25min\_25min_25筛,现在理解得更多一些,补一波笔记先放题免得我忘了LOJ#6053. 简单的函数#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include&amp
原创
1350阅读
0评论
2点赞
发布博客于 2 年前

【模板】替罪羊树

本来是打开了一道点分治的题,后来发现要用高速平衡树据说splaysplaysplay和fhq Treapfhq\ Treapfhq Treap都非常非常的慢据说替罪羊树是除了红黑树以外最快的平衡树?于是就来学习了一下核心思想就是每次插入不改变树的形态,当树极不平衡时就把它拍扁重构alpha=0.8alpha=0.8alpha=0.8的时候据说最快模板题:luoguP...
原创
265阅读
0评论
3点赞
发布博客于 2 年前

set+LCA--luoguP3320 [SDOI2015]寻宝游戏

传送门说是虚树…其实也没真正用到虚树因为他最后要走回去,所以每条边都会经过两遍,选哪个点都无所谓,所以可以按照dfsdfsdfs序排序,加入一个新点的时候就把前驱后继的距离减掉再加上它到前驱和它到后继的距离,这个求一下lcalcalca就行,删掉点就是反过来。一开始setsetset写的不太好rerere了,注意判一下它没有前驱或者后继的情况代码如下:#include<iostre...
原创
188阅读
0评论
1点赞
发布博客于 2 年前

SAM+虚树--CF1073G Yet Another LCP Problem

传送门这题调的我两眼发黑。。。首先想SAMSAMSAM建出来就是反串的后缀树,那么把原串反转一下,求后缀的lcplcplcp就变成了求前缀的最长后缀,在SAMSAMSAM上就是两个代表节点lcalcalca的lenlenlen,用这些关键点和他们的lcalcalca建出虚树,然后在虚树上跑,设siza[u],sizb[u]siz_a[u],siz_b[u]siza​[u],sizb​[u]分别...
原创
157阅读
0评论
1点赞
发布博客于 2 年前

【模板】矩阵求逆

方法就是通常的那种方法,就是在原矩阵旁边放一个单位矩阵,对两个矩阵一起高斯消元,当原矩阵被消成单位矩阵时右边的单位矩阵就是它的逆,在高斯消元过程中如果不能继续下去就无解步骤就是先找到当前要操作的行,然后给这一行进行变换,乘以1fi,i\frac{1}{f_{i,i}}fi,i​1​然后对其余行,给操作行乘以−fj,i-f_{j,i}−fj,i​加到这些行上去,这样就能保证fi,i=1f_{i,...
原创
489阅读
0评论
1点赞
发布博客于 2 年前

二项式反演--CF GYM 101933 K. King's Colors

传送门二项式反演裸题设fif_ifi​表示至多有iii种颜色的方案数,gig_igi​为恰好有iii种颜色的方案数这个是跟树的形态无关的因为一个点只有一个父亲,所以fi=i×(i−1)n−1f_i=i\times(i-1)^{n-1}fi​=i×(i−1)n−1再套用公式fk=∑i=0kCki×gif_k=\sum_{i=0}^k C_k^i\times g_ifk​=∑i=0k​Cki​...
原创
238阅读
0评论
1点赞
发布博客于 2 年前

李超线段树(学习笔记)

最后一个。。。李超线段树就是用来解决平面上放线段的一些问题可以去看这个博客我懒得写了一个例题:bzoj3165: [Heoi2013]Segment李超线段树裸题代码如下:#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include...
原创
378阅读
4评论
1点赞
发布博客于 2 年前

二项式反演(学习笔记)

qwqqwqqwq机房最后一个学二项式反演的人众所周知 二项式反演可以表示成fn=∑i=0n(−1)i×Cni×gi⟺gn=∑i=0n(−1)i×Cni×fif_n=\sum_{i=0}^n (-1)^i\times C_n^i\times g_i\Longleftrightarrow g_n=\sum_{i=0}^n(-1)^i\times C_n^i \times f_ifn​=i=0∑n...
原创
5529阅读
0评论
2点赞
发布博客于 2 年前

状压+FMT--luoguP4221 [WC2018]州区划分

传送门暴力是3n3^n3n枚举子集,f[S]=∑S′∈Sf[S′]×(sumS−S′sumS)pf[S]=\sum_{S'\in S}f[S']\times (\frac{sum_{S-S'}}{sum_S})^pf[S]=∑S′∈S​f[S′]×(sumS​sumS−S′​​)p然后把这个东西分成f[i][S]f[i][S]f[i][S]...
原创
154阅读
0评论
1点赞
发布博客于 2 年前

动态点分治(学习笔记)

机房最后一个学习动态点分治的人(也许不是前置知识:点分治(雾动态点分治也叫点分树,就是把点分治时候每个重心组成的树拿出来用于动态维护一些东西建点分树的过程就是点分治过程,同时记下每层重心的父亲(也就是上一层重心),一般是提前建出点分树,然后每次修改和询问时暴力跳树,因为点分树的树高是lognlognlogn级别的,所以总复杂度是nlognnlognnlogn(当然有时候需要一些数据结构可能...
原创
91阅读
0评论
1点赞
发布博客于 2 年前

【模板】Pollard Rho

就是个板子···然而luoguluoguluogu上最后一个点太毒了949494分弃疗复杂度是p\sqrt pp​的,ppp是nnn的某个最小因子,满足ppp与n/pn/pn/p互质对于复杂度的优化可以用真正地快速乘,以及ctzctzctz二进制版gcdgcdgcd,还有在中间每次k<<=1k<<=1k<<=1据说可以更快,...
原创
71阅读
0评论
1点赞
发布博客于 2 年前

【模板】Pollard Rho

就是个板子···然而luoguluoguluogu上最后一个点太毒了949494分弃疗复杂度是p\sqrt pp​的,ppp是nnn的某个最小因子,满足ppp与n/pn/pn/p互质对于复杂度的优化可以用真正地快速乘,以及ctzctzctz二进制版gcdgcdgcd,还有在中间每次k<<=1k<<=1k<<=1据说可以更快,...
原创
71阅读
0评论
1点赞
发布博客于 2 年前

点分治+树状数组--牛客网字节跳动冬令营网络赛J Sortable Path on Tree

传送门吕老板讲的点分治好题啊qwq(他还讲了一个故事:他们打比赛的时候看到这题,这不是点分治吗,于是跟猫老师说那你写一下吧于是猫锟没有写出来足可见这题的毒了…题目大意就是要求树上有对少点对使得他们的路径是有序的,有序的就是把前一段或者后一段切下来拼到另一边就变成了升序或者降序的如果点分治的时候想讨论序列的形态什么的非常的麻烦,吕老板讲了一个很简单的做法:将一段路径的点权用大于小于符号连接...
原创
76阅读
0评论
1点赞
发布博客于 3 年前

后缀数组+调和级数--bzoj2119: 股市的预测

传送门其实就是复杂度是调和级数…首先差分一下就变成了找到形如abaabaaba的串的个数,暴力求的话就是n2lognn^2lognn2logn的,可以枚举aaa的长度,然后把串分成一段一段的,只计算每段的第一个点,从第一个点lll找到对应的r=l+len+mr=l+len+mr=l+len+m,然后看l,rl,rl,r能同时向左右延伸到哪里,也就是后缀lcplcplcp和反串后缀lcplcpl...
原创
140阅读
0评论
2点赞
发布博客于 3 年前

后缀数组+二分+莫队--luoguP2336 [SCOI2012]喵星球上的点名

(树状数组那么好写我为什么要写莫队 雾)传送门后缀数组就不说了···然后对于每一个询问也插入序列,他的答案是一个lcp≥lenlcp\ge lenlcp≥len区间,可以二分出来,然后就变成区间内问不同数字的个数,这就是裸莫队了···第二个问题的话可以一边莫队一边计算,记录每个数字上一次出现的位置,然后把这一段的和加上细节好多的···因为后面询问没有用特殊数字隔开wa了好久还有莫队排序那...
原创
97阅读
0评论
1点赞
发布博客于 3 年前

set+线段树合并分裂--bzoj4552: [Tjoi2016&Heoi2016]排序

传送门机房最后一个学习线段树合并的人qwq题目要求支持区间升序或降序排序,并且单点查询思路是一开始对每一个点建一个权值线段树,然后排序的话就是把一段权值线段树都合并起来,这样就无所谓顺序了,然后具体操作用setsetset什么的维护一下线段树的左右端点就好了重要的就是线段树合并和分裂了,合并的话就是真正意义上的合并(好像有时候不是直接合并?)把对应的sizsizsiz加起来,分裂根据本题目...
原创
130阅读
0评论
1点赞
发布博客于 3 年前

2018.12.22模拟赛

肥肠良心的一场模拟赛了···T1【题目描述】Mirko想在一块土地上种草莓。这块土地可以看作一个N行M列格子组成的矩形,这些格子中有些适合种植草莓,有些不适合。Mirko希望在矩形中找出一片满足种植要求的长方形区域,即区域中每个格子都适合种植。这时Mirko突然想到一个问题。设格子(i,j)的权值W(i,j)表示有多少个满足种植要求的长方形区域包含了这个格子。那么所有格子的权值之和是多少...
原创
94阅读
0评论
0点赞
发布博客于 3 年前

贪心+线性基--bzoj2460: [BeiJing2011]元素

传送门突然发现自己忘了线性基怎么写了···于是复习一下裸的线性基,要权值最大就按权值排序然后一个一个加。线性基:axa_xax​的二进制第xxx位为1,构造方法就是从高位到低位扫描每个数ppp,如果xxx这一位是111,并且ax=0a_x=0ax​=0,那么让ax=pa_x=pax​=p,跳出循环,否则就让ppp^=ax=a_x=ax​代码如下:#include<iostream&...
原创
819阅读
0评论
1点赞
发布博客于 3 年前

LCT(动态最小生成树)+kruscal--bzoj2594: [Wc2006]水管局长数据加强版

传送门(好久不打lct板子都快忘了lct维护边权的套路就是把边拆成点,这个点向两边的点分别连边,点权就是边权,原树上的点根据需要可以设点权为inf或者-inf动态最小生成树离线删边变加边,就是在lctlctlct中记录mx[x]mx[x]mx[x]和id[x]id[x]id[x]表示子树点权中最大的点权和点的编号,加入一条新边(x,y)(x,y)(x,y)的时候,如果两点没有联通就连起来,如...
原创
202阅读
0评论
1点赞
发布博客于 3 年前

后缀数组+单调栈--poj3415 Common Substrings

传送门时隔多年(其实也就几天 )我终于把这道题A了就是用普通的后缀数组结合单调栈,加了个>k>k>k的限制,和[HAOI2016]找相同字符思路差不多,但有一些细节比如h[i]h[i]h[i]是和上一名的lcplcplcp,所以有些判断要−1-1−1之类的一直被多组数据坑···s[n+1]s[n+1]s[n+1]一定要置000代码如下:#include&...
原创
107阅读
0评论
1点赞
发布博客于 3 年前

FFT+生成函数--hdu5307 He is Flying

传送门题意:给一个数列,若有一个数对(i,j)(i,j)(i,j)满足sum[i]−sum[j−1]==Ssum[i]-sum[j-1]==Ssum[i]−sum[j−1]==S,则得到i−(j−1)i-(j-1)i−(j−1)的收益,求SSS取000到sumnsum_nsumn​的每一个值时,各自的全部收益。看那个范围就是典型的FFTFFTFFT啊···不过这个题的构造还是很巧妙的,因为要...
原创
103阅读
0评论
0点赞
发布博客于 3 年前

后缀数组+单调栈+set--bzoj4453: cys就是要拿英魂!

传送门好题!!!介于是一道权限题所以我就粘题面吧···Descriptionpps又开始dota视频直播了!一群每天被pps虐的蒟蒻决定学习pps的操作技术,他们把pps在这局放的技能记录了下来,每个技能用一个字符表示。经过研究,蒟蒻们发现字典序更大的连招威力更大。于是所有蒟蒻都想学习pps最强的连招。但是他们太弱了,不能学会整个视频里的连招,只能学会陈老师一段区间间内的连招,可是这个...
原创
84阅读
0评论
1点赞
发布博客于 3 年前

(假的)后缀数组--bzoj4319: cerc2008 Suffix reconstruction

传送门这其实是一道假的后缀数组233考查的其实是对后缀数组的理解quq#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define maxn 500005using namespace std;...
原创
68阅读
0评论
1点赞
发布博客于 3 年前

后缀数组+主席树--bzoj4556: [Tjoi2016&Heoi2016]字符串

传送门可以先二分答案midmidmid,判断[a,b−mid+1][a,b-mid+1][a,b−mid+1]是否有lcp(rk[i],rk[c])≥midlcp(rk[i],rk[c])\ge midlcp(rk[i],rk[c])≥mid的iii,这个是一个区间,可以再用二分+ststst表O(1)O(1)O(1)查询找出来,然后用主席树判断[a,b−mid+1][a,b-mid+1][a,...
原创
126阅读
0评论
1点赞
发布博客于 3 年前

后缀数组+二分--bzoj4698: Sdoi2008 Sandy的卡片

传送门差分一下,去掉首项,然后二分一个长度看连续的一段大于这个长度的heightheightheight是否能包含所有nnn个序列代码如下:#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define...
原创
90阅读
0评论
1点赞
发布博客于 3 年前

组合数学+二次剩余--51Nod 1236 序列求和 V3

传送门nnn忘记取模调了半个小时祭。fibfibfib是有通项公式的,然后式子写出来就是这样:设x=1+52,y=1−52,z=15x=\frac{1+\sqrt{5}}{2},y=\frac{1-\sqrt{5}}{2},z=\frac{1}{\sqrt{5}}x=21+5​​,y=21−5​​,z=5​1​ans=∑i=1nzk×(xi−yi)kans=\sum_{i=1}^n z^k...
原创
212阅读
0评论
1点赞
发布博客于 3 年前

组合数学--51Nod 1149 Pi的递推式

传送门F(i)F(i)F(i)可以理解成从数轴上位置iii出发每次向左走111或PiPiPi个单位,使最终位置刚好小于444的方案数,枚举走了多少个111,判断一下最后剩下的如果≥3\ge3≥3就可以走111,否则只能走PiPiPi#include<iostream>#include<cstdio>#include<algorithm>#include...
原创
79阅读
0评论
1点赞
发布博客于 3 年前

组合数学--51Nod 1627 瞬间移动

传送门隔板法裸题枚举走了几步,然后隔板法,不允许空#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define maxn 200005#define LL long longusing names...
原创
102阅读
0评论
1点赞
发布博客于 3 年前

组合数学--51Nod 1556 计算

传送门组合数学好题!首先考虑题目要求,在一个数xxx后面填的数可以是x,x−1,x+1x,x-1,x+1x,x−1,x+1,把数列看做网格图,把+1+1+1看做右上走一步,−1-1−1右下,000往右,问题变成了从(0,0)−>(n−1,m)(0,0)->(n-1,m)(0,0)−>(n−1,m)不穿过x=0x=0x=0的方案数,根据套路,可以用总−-−穿过的...
原创
115阅读
0评论
1点赞
发布博客于 3 年前

二次剩余(学习笔记)

就是用来求解x2≡n mod px^2\equiv n \bmod px2≡nmodp的一个方法对ppp进行分类讨论:p=2p=2p=2 ,则x=nx=nx=nppp为奇素数勒让德符号:(ap)={1a在模p意义下是二次剩余−1a在模p意义下是非二次剩余0a≡0 mod&...
原创
1656阅读
0评论
2点赞
发布博客于 3 年前

生成函数+组合数学--bzoj3028: 食物

传送门可以把这些限制都列成生成函数:1+x2+x4+...=11−x21+x^2+x^4+...=\frac{1}{1-x^2}1+x2+x4+...=1−x21​1+x1+x1+x1+x+x2=1−x31−x1+x+x^2=\frac{1-x^3}{1-x}1+x+x2=1−x1−x3​x+x3+x5+...=x1−x2x+x^3+x^5+...=\frac{x}{1-x^2}x+x3...
原创
140阅读
0评论
1点赞
发布博客于 3 年前

后缀数组+平衡树--luoguP4070 [SDOI2016]生成魔咒

传送门首先有一个结论:一个串中本质不同的子串个数为n×(n+1)2−∑i=1nheight[i]\frac{n\times(n+1)}{2}-\sum_{i=1}^nheight[i]2n×(n+1)​−∑i=1n​height[i]因为正着考虑的话每次要加很多个后缀,不好维护,所以可以把序列倒过来看,每次加一个字符相当于加一个后缀,那就可以先预处理出整个序列的heightheighthei...
原创
69阅读
0评论
1点赞
发布博客于 3 年前

组合数学+中国剩余定理--51Nod 1362搬箱子

传送门题目说只能往三个方向走,往右,往下和右下,那么就可以找他们之间的关系,假如往下走了aaa步,右下走了bbb步,右走了ccc步,就有:a+b=na+b=na+b=nb+c=mb+c=mb+c=m于是就可以套路地枚举往下走了几步但题中只需要到最后一行就好了,所以还需要枚举到了哪一列就有了:ans=∑i=0n∑j=0mCi+ji×Cjn−ians=\sum_{i=0}^n \sum_{...
原创
96阅读
0评论
1点赞
发布博客于 3 年前

多项式求逆/指数生成函数/分治FFT--bzoj3456: 城市规划

首先是多项式求逆(好像也是普遍做法?先来推一推柿子qwqqwqqwq设f[i]f[i]f[i]为iii个点的方案数,若不考虑不合法情况,f[i]=2Ci2f[i]=2^{C_i^2}f[i]=2Ci2​若考虑不合法情况,就是有不连通的情况,因为所有点的本质都是一样的,所以我们只需要规定一个点为基准点,假设为111那么111号点的联通块大小可能为1≤j≤i−11\le j\le i-11≤j...
原创
222阅读
0评论
1点赞
发布博客于 3 年前

思路题--CF1082E Increasing Frequency

传送门大意就是给你nnn个数,你可以选择一段区间加上某个值(可正负),问操作完之后CCC出现的次数最大是多少?我觉得我的做法很巧妙!首先要知道一段区间加上某个值以后这个区间原来=C=C=C的数会变,而对CCC的贡献一定都是一个数而且a[l]=a[r]=a[l]=a[r]=a[l]=a[r]=这个数(显然)因为权值都比较小,然后记录mx[a[i]]mx[a[i]]mx[a[i]]表示某个权值对...
原创
62阅读
0评论
1点赞
发布博客于 3 年前

树链剖分+线段树--CF1076E Vasya and a Tree

传送门题意就是给你一颗nnn个点的树,一开始权值都是000,然后mmm个操作,每个操作对一个点xxx的子树中到它距离不超过ddd的点权都加上valvalval,问最后所有点的点权是多少对于子树的修改可以用树剖+线段树做到,但是对于半个子树的修改很难做到,那就可以将修改操作排一下序,按照dep[x]+ddep[x]+ddep[x]+d从大到小排,这样的话当修改完了一层,后面的修改都不会修改到这一...
原创
79阅读
0评论
1点赞
发布博客于 3 年前

后缀数组+二分--luoguP2852 [USACO06DEC]牛奶模式Milk Patterns

传送门二分答案,然后后缀数组里再用二分判断,同luoguP3649#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define maxn 20005#define maxm 1000005using...
原创
65阅读
0评论
1点赞
发布博客于 3 年前

后缀数组+二分--luoguP2852 [USACO06DEC]牛奶模式Milk Patterns

传送门二分答案,然后后缀数组里再用二分判断,同luoguP3649#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define maxn 20005#define maxm 1000005using...
原创
65阅读
0评论
1点赞
发布博客于 3 年前

FFT--UVA12633 Super Rooks on Chessboard

传送门不那么裸的FFTFFTFFT,题目给的标号方式不太好,可以考虑改成从上到下为1−n1-n1−n,从右到左为1−m1-m1−m,这样从左上到右下的一条斜线上的点的横纵坐标的和是一样的,就可以用FFTFFTFFT来解决,斜着的只要记一下就行了,横和竖都可以用斜着的那种方法来计算emmm这样说可能不太清楚一看代码就懂了#include<iostream>#include<c...
原创
96阅读
0评论
1点赞
发布博客于 3 年前

【FWT】题目总结

之前做过的FWTFWTFWT的题好多都没写博客一块写一下不会FWTFWTFWT的话请右转讲解部分板子上面也有,下面是一些不那么裸的题(其实还是很裸的)CF662C 我做的第一道FWTFWTFWT把矩阵压缩成mmm个二进制数,可以枚举2n2^n2n表示要反转那些行,发现反转其实就是把那些二进制数异或上当前反转集合iii,假设d(x)d(x)d(x)表示二进制数xxx中min(cnt1,cnt...
原创
465阅读
1评论
1点赞
发布博客于 3 年前

【模板】多项式乘除取模,开方,求逆元,对数

证明什么的这个博主写的很详细了这里只给出代码多项式乘,除(取模),求逆元:例题–luoguP4512#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#d
原创
350阅读
0评论
1点赞
发布博客于 3 年前

后缀数组--luoguP2408 不同子串个数

传送门求本质不同的子串个数,是HDU4622的弱化版方法也是求出hhh数组,以排名为顺序遍历每个后缀,让ans+=ans+=ans+=后缀长度−-−它和之前所有后缀的lcplcplcp代码如下:#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#...
原创
91阅读
0评论
1点赞
发布博客于 3 年前

LCT(维护边双)--bzoj1969: [Ahoi2005]LANE 航线规划

传送门用LCTLCTLCT维护边双,删边不好操作,可以离线后变成加边。如果两个点u,vu,vu,v已经联通,再加一条(u,v)(u,v)(u,v)的边就会让它变成边双,所以可以用并查集维护联通性。当一条链变成边双就把它在LCTLCTLCT上缩成一个点,具体的可以直接在splaysplaysplay上dfsdfsdfs把所有点的父亲都修改成一个点,而做其他操作如splaysplaysplay和...
原创
142阅读
0评论
1点赞
发布博客于 3 年前

FFT+容斥--bzoj3771: Triple

传送门分别把val,val∗2,val∗3val,val*2,val*3val,val∗2,val∗3算一遍FFTFFTFFT代表选一个的选两个的和选三个的,但是会算重,所以考虑容斥式子在代码里#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#inclu...
原创
72阅读
0评论
1点赞
发布博客于 3 年前

长链剖分(学习笔记)

很久很久以前erkkierkkoerkkierkkoerkkierkko给我们分享了一下这个东西,好像和dsu on treedsu\ on\ treedsu on tree的思想很像,都是长链直接转移,短链暴力算其中有一个很有意思的东西就是指针动态分配数组空间,因为一个儿子的信息刚好是父亲往左或者往右移一步,比如说深度,如果一个dpdpdp数组是以深度为...
原创
177阅读
0评论
1点赞
发布博客于 3 年前

分块FFT--bzoj3509: [CodeChef] COUNTARI

传送门给定一个长度为N的数组A[],求有多少对i, j, k(1<=i<j<k<=N)满足A[k]-A[j]=A[j]-A[i]。暴力的话就考虑枚举jjj,然后算两边的可以用FFTFFTFFT来算,但这样复杂度是n∗mx∗logmxn*mx*logmxn∗mx∗logmx,优化的话就可以用分块,而且块不能太小,然后块外用FFTFFTFFT,块内就暴力。注意卡常被卡了...
原创
189阅读
0评论
1点赞
发布博客于 3 年前

【概率期望】题目总结

今天讲了讲数学,期望这做了四道题,一块写个博客记一下CF540D Bad Luck Island容易想到设f[i][j][k]f[i][j][k]f[i][j][k]表示剩下iii个rrr,jjj个sss,kkk个ppp时候的概率,然后枚举遇见的是哪两种人,算一下概率就好了,但算的时候注意不能直接算,因为同种的人不能遇见,所以要减掉#include<iostream>#incl...
原创
344阅读
0评论
2点赞
发布博客于 3 年前

矩阵树定理--luoguP4208 [JSOI2008]最小生成树计数

传送门以前用dfsdfsdfs做的,用基尔霍夫矩阵真的玄啊首先这道题有这么几个定理:(来自Z-Y-Y-S的博客)定理一:如果 A,BA, BA,B 同为 GGG 的最小生成树,且 AAA 的边权从小到大为 w(a1),w(a2),w(a3),⋯w(an)w(a_1), w(a_2), w(a_3), \cdots w(a_n)w(a1​),w(a2​),w(a3​),⋯w(an​),BBB ...
原创
58阅读
0评论
1点赞
发布博客于 3 年前

矩阵树定理--luogu P3317 [SDOI2014]重建

传送门好吧在Monster_QiMonster\_QiMonster_Qi的强烈要(bi)求(po)下,这篇文章转自他的博客我就不写了只好放上我优秀的代码:#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath&gt...
原创
62阅读
0评论
1点赞
发布博客于 3 年前

矩阵树定理+容斥--luoguP4336 [SHOI2016]黑暗前的幻想乡

传送门把所有公司的合法边都连起来,构成一个无向图合法的树需要满足两个条件:是图的生成树每个边分给不同的公司直接算会算重,考虑容斥可以用总数-一个公司没有+两个公司没有-三个…每一次都要做一遍高斯消元,复杂度是O(2n−1×(n−1)3×log(n−1))O(2^{n-1}\times (n-1)^3\times log(n-1))O(2n−1×(n−1)3×log(n−1))看起来...
原创
57阅读
0评论
0点赞
发布博客于 3 年前

FFT+计数--bzoj3513: [MUTC2013]idiots

传送门因为不能构成三角形的三边满足a+b≤ca+b\le ca+b≤c用FFTFFTFFT求出a+b=ca+b=ca+b=c的方案数,再把重复取一个的减掉,然后从小到大枚举第三条边,把前面小于的都加上,再乘以当前长度的边的个数加到答案里因为a,ba,ba,b和b,ab,ab,a是一样的,所以要除以2再用总数Cn3C_n^3Cn3​减掉不合法的再除以总数就是概率注意limit&lt...
原创
61阅读
0评论
1点赞
发布博客于 3 年前

LCT(维护加乘标记)--luogu P1501 [国家集训队]Tree II

传送门就是链上维护加和乘的标记,先乘后加没开long long wa到怀疑人生祭#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define N 100005#define ls ch[x][0]...
原创
78阅读
0评论
1点赞
发布博客于 3 年前

动态DP--NOIP2018 D2T3保卫王国

其实真实做法是倍增 ,但为了练习就用ddpddpddp写了qwqqwqqwq最小覆盖集=sum−sum-sum−最大独立集然后就是裸ddpddpddp了,怎么实现可以看这里但是他有两个点的强制要求,如果强制不选就可以把权值改成infinfinf,强制选就改成−inf-inf−inf然后最后再加回来就好了注意开LL代码如下:#include<iostream>#inclu...
原创
205阅读
0评论
1点赞
发布博客于 3 年前

树形DP+FWT--hdu5909Tree Cutting

传送门暴力就是O(n3)O(n^3)O(n3)的树形dpdpdp,设f[u][i]f[u][i]f[u][i]为uuu为根的子树,异或和为iii的方案数,那么转移就是f[u][i]=∑v∈sonu(f[v][i]+∑j=0m−1f[v][j]×f[u][i⊕j])f[u][i]=\sum_{v\in son_u}(f[v][i]+\sum_{j=0}^{m-1}f[v][j]\times f[...
原创
145阅读
0评论
0点赞
发布博客于 3 年前

快速沃尔什变换(FWT)(学习笔记)

学习了FFTFFTFFT,已经解决了形如c(k)=∑i+j=ka(i)×b(j)c(k)=\sum_{i+j=k}a(i)\times b(j)c(k)=∑i+j=k​a(i)×b(j)的问题,那如果条件不是普通的加法,而是一些特殊的二进制运算怎么办呢?这时候就有了FWTFWTFWT也就是说,FWTFWTFWT可以用来解决形如c(k)=∑i⊕j=ka(i)×b(j)c(k)=\sum_{i\o...
原创
193阅读
0评论
1点赞
发布博客于 3 年前

任意模数NTT(学习笔记)

FFTFFTFFT有时候会被卡精度?所以可能会有模数,有了模数以后就需要模数的原根。原根是什么?(留坑待填)NTTNTTNTT有很多种解决方法1.1.1.特殊模数(2k+1)∣(p−1),(p−1)>DFT的长度(2k+1)|(p−1),(p−1)>DFT的长度(2k+1)∣(p−1),(p−1)>DFT的长度,可以直接暴力求原根ggg,用ggg代替单位复...
原创
955阅读
0评论
2点赞
发布博客于 3 年前

LCT+树剖+线段树--bzoj4817: [Sdoi2017]树点涂色

传送门和bzoj3379有异曲同工之妙也是用树剖+线段树的思想维护dfsdfsdfs序,然后查询区间最大值1操作就是lctlctlct的accessaccessaccess,同bzoj33792操作就是f(x)+f(y)−2×f(lca(x,y))f(x)+f(y)-2\times f(lca(x,y))f(x)+f(y)−2×f(lca(x,y)),也可以用树剖+线段树3操作就是线段树...
原创
43阅读
0评论
0点赞
发布博客于 3 年前

快速傅里叶变换(FFT)(学习笔记)

学习了一波FFTFFTFFT,只是浅浅的入门。还有很多前置知识,有一些还不是太了解,完了深入学习之后再补博客qwqqwqqwq以下内容大部分参考秦岳学长的课件多项式形如A(x)=∑k=0n−1ak×xkA(x)=\sum_{k=0}^{n-1}a_k\times x^kA(x)=∑k=0n−1​ak​×xk,其中aka_kak​为多项式系数C(x)=A(x)+B(x)C(x)=A(x)+B...
原创
504阅读
0评论
2点赞
发布博客于 3 年前

树剖+线段树--bzoj3626

传送门也是一道思路很好的题。对于一个点zzz,和一个标号区间[l,r][l,r][l,r],要求∑i=lrdep[LCA(i,z)]\sum_{i=l}^rdep[LCA(i,z)]∑i=lr​dep[LCA(i,z)]如果纯暴力的话是n2n^2n2的,甚至连第一个部分分都拿不到但是LCA(i,z)LCA(i,z)LCA(i,z)一定是zzz到rootrootroot的链上的某一个点,如果...
原创
115阅读
0评论
0点赞
发布博客于 3 年前

线段树--SP2916 GSS5 - Can you answer these queries V

传送门以前讲过的题,会最大子段和然后分类讨论一下就好了#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define N 10005#define ls cur<<1#define rs ...
原创
83阅读
0评论
0点赞
发布博客于 3 年前

NTT+分治FFT--P4091 [HEOI2016/TJOI2016]求和

传送门这道题很妙啊首先看题目中的式子,令新的f(n)=∑i=0nS(n,i)×2i×(i!)f(n)=\sum_{i=0}^nS(n,i)\times 2^i\times (i!)f(n)=∑i=0n​S(n,i)×2i×(i!),如果能快速求出这个式子的值,那么ans=∑i=0nf(i)ans=\sum_{i=0}^n f(i)ans=∑i=0n​f(i)首先设g(n)=∑i=0nS(n,...
原创
276阅读
0评论
1点赞
发布博客于 3 年前

动态DP(学习笔记)

一道模板题动态dpdpdp是猫学长发明的用来解决树上带修DP的问题的算法。好像多数是求树上最大权独立集?树上最大权独立集我们可以用树形dpO(n)dpO(n)dpO(n)地求出来,设f[u][0/1]f[u][0/1]f[u][0/1]表示uuu为根的子树uuu选或不选的最优方案,可以列出转移式:f[u][0]+=max(f[v][1],f[v][0])f[u][0]+=max(f[v][...
原创
875阅读
0评论
1点赞
发布博客于 3 年前

动态DP(学习笔记)

一道模板题动态dpdpdp是猫学长发明的用来解决树上带修DP的问题的算法。好像多数是求树上最大权独立集?树上最大权独立集我们可以用树形dpO(n)dpO(n)dpO(n)地求出来,设f[u][0/1]f[u][0/1]f[u][0/1]表示uuu为根的子树uuu选或不选的最优方案,可以列出转移式:f[u][0]+=max(f[v][1],f[v][0])f[u][0]+=max(f[v][...
原创
875阅读
0评论
1点赞
发布博客于 3 年前

【模板】分治FFT

luogu4721一道模板题前置知识:FFT NTT cdqcdqcdq分治(虽然本人觉得和cdqcdqcdq没啥关系,应该只用了分治思想用来解决这样的式子:f(i)=∑j=1i(f(j)×g(i−j))f(i)=\sum_{j=1}^i(f(j)\times g(i-j))f(i)=∑j=1i​(f(j)×g(i−j))可以看到因为fff数组是要求出来的,所以不能直接用FFTFFTFFT...
原创
1340阅读
0评论
1点赞
发布博客于 3 年前

FFT--bzoj4503: 两个串

传送门先不管???,考虑两个串的对应位置,如果ttt在sss的iii处出现则一定满足∑j=ii+lent−1(s[j]−t[j−i])2=0\sum_{j=i}^{i+lent-1}(s[j]-t[j-i])^2=0∑j=ii+lent−1​(s[j]−t[j−i])2=0这个拆开然后翻转ttt就是卷积的形式再考虑???,发现只要把???的值赋为000,然后再在这个式子外乘上t[j]t[j...
原创
98阅读
0评论
0点赞
发布博客于 3 年前

后缀数组+二分+--luoguP3649 [APIO2014]回文串

传送门首先回文子串可以用manachermanachermanacher求出来,并且可以知道开头和长度,那么问题就转化成求一个子串在原串中出现了多少次。这个可以用SAMSAMSAM求(但我还不会于是就用了SASASA,首先把hhh数组求出来,那么结合ststst表就可以O(1)O(1)O(1)求出一个后缀和另一个后缀的lcplcplcp,这样看起来是n2n^2n2的复杂度,但因为lcp(i,...
原创
92阅读
0评论
0点赞
发布博客于 3 年前

后缀数组+单调栈--luoguP3181 [HAOI2016]找相同字符

传送门可以把两个字符串通过一个特殊字符连起来然后后缀数组求出hhh想到一个n2n^2n2做法,这个其实就是要求对于s2s2s2中的每个后缀,求其和s1s1s1的每个后缀的lcplcplcp然后加起来,用hhh数组和ststst表就能办到复杂度浪费在了枚举s2s2s2的后缀上,但根据lcp(i,j)=mini+1≤k≤j(h[k])lcp(i,j)=min_{i+1\le k\le j}(h[...
原创
74阅读
0评论
1点赞
发布博客于 3 年前

后缀数组(lcp)+st表-hdu4622

hdu4622后缀数组基础题?昨天学了后缀排序其实最有用的是后缀数组求lcplcplcp?用了一个height[i]=lcp(sa[i],sa[i−1])height[i]=lcp(sa[i],sa[i-1])height[i]=lcp(sa[i],sa[i−1]),也就是排名为iii的和排名i−1i-1i−1的后缀的lcplcplcp为了方便,设h[i]=height(rk[i])h[i...
原创
421阅读
1评论
0点赞
发布博客于 3 年前

【模板】后缀排序

模板题学习后缀数组的基础就是后缀排序啦先说一下变量:最重要的两个sa和rksa和rksa和rk数组:sa[i]表示排名为i的位置sa[i]表示排名为i的位置sa[i]表示排名为i的位置rk[i]表示位置i的后缀的排名rk[i]表示位置i的后缀的排名rk[i]表示位置i的后缀的排名sa[rk[i]]=rk[sa[i]]=isa[rk[i]]=rk[sa[i]]=isa[rk[i]]=rk...
原创
931阅读
0评论
2点赞
发布博客于 3 年前

【模板】后缀排序

模板题学习后缀数组的基础就是后缀排序啦先说一下变量:最重要的两个sa和rksa和rksa和rk数组:sa[i]表示排名为i的位置sa[i]表示排名为i的位置sa[i]表示排名为i的位置rk[i]表示位置i的后缀的排名rk[i]表示位置i的后缀的排名rk[i]表示位置i的后缀的排名sa[rk[i]]=rk[sa[i]]=isa[rk[i]]=rk[sa[i]]=isa[rk[i]]=rk...
原创
931阅读
0评论
2点赞
发布博客于 3 年前

线段树--luoguP4560 [IOI2014]Wall 砖墙

传送门很巧啊只需要维护上界和下界就好了一开始以为要维护四个,其实只用维护两个就好了,如果到了l=rl=rl=r的时候修改一下序列上的值就行。#include<iostream>#include<cstdio>#include<cstring>#define N 2000005#define ls cur<<1#define rs cu...
原创
56阅读
0评论
0点赞
发布博客于 3 年前

FFT+manacher--bzoj3160: 万径人踪灭

传送门一道隐蔽的FFTFFTFFT题目要求回文子序列的个数,不能连续的话就用全部的减去连续的,连续的可以用manachermanachermanacher计算,全部的回文子序列怎么求呢?因为这个序列中只有aaa和bbb,假设a=1,b=0a=1,b=0a=1,b=0,那么两个位置的字符都是aaa就是相乘为000(bbb的反着来同理)。这样的话以iii为中心的回文子序列就可以看成s[i−k]...
原创
66阅读
0评论
0点赞
发布博客于 3 年前

拉格朗日插值法--CF622F The Sum of the k-th Powers

传送门注意到把nnn作为xix_ixi​∑i=1nim\sum_{i=1}^ni^m∑i=1n​im作为yiy_iyi​这其实是一个m+1m+1m+1次多项式,把前m+2m+2m+2个点当成已知点,就可以拉格朗日插值法做了。注意转移的时候乘除就好了,可以预处理前缀积和后缀积,把复杂度降下来。#include<iostream>#include<cstdio>#in...
原创
70阅读
0评论
0点赞
发布博客于 3 年前

拉格朗日插值法--CF622F The Sum of the k-th Powers

传送门注意到把nnn作为xix_ixi​∑i=1nim\sum_{i=1}^ni^m∑i=1n​im作为yiy_iyi​这其实是一个m+1m+1m+1次多项式,把前m+2m+2m+2个点当成已知点,就可以拉格朗日插值法做了。注意转移的时候乘除就好了,可以预处理前缀积和后缀积,把复杂度降下来。#include<iostream>#include<cstdio>#in...
原创
70阅读
0评论
0点赞
发布博客于 3 年前

拉格朗日插值法

模板题给出nnn个点(xi,yi)(x_i,y_i)(xi​,yi​),让你确定这个n−1n-1n−1次方程并代入求值这个有三种求法第一种是差分法,只适用于xi=ix_i=ixi​=i的情况,就是不断做差分直到序列变成一个定值就可以求出所有项的系数,复杂度O(n2)O(n^2)O(n2)第二种是高斯消元法,形如f(x)=∑i=1nai×xif(x)=\sum_{i=1}^na_i\time...
原创
116阅读
0评论
0点赞
发布博客于 3 年前

组合数学+树形dp+第二类striling数--luoguP4827 [国家集训队] Crash 的文明世界

传送门一道组合数学的好题。首先是nk2nk^2nk2的505050分暴力:从xk−>(x+1)kx^k->(x+1)^kxk−>(x+1)k,用二项式定理展开每个节点维护k+1k+1k+1个数两次树形dpdpdp分别求子树的和从父亲上传下来的,f[u][j]f[u][j]f[u][j]表示uuu节点子树到它的jjj次幂和。代码如下:#include&l...
原创
101阅读
0评论
1点赞
发布博客于 3 年前

【随笔】NOIP2018游记

幸福是殊途同归的,善良的人总会被这世界善待。我始终坚信这一点,而这也是我身边的人和事一次又一次地让我失望后,我依然保持善良的理由。 ——题记前言因为这场noipnoipnoip,经历了许多,虽然说过程很曲折,但最终还是留在oioioi组了。这篇游记写的有点长,而且因为想把过程写出来,所以有一点流水账的感觉,毕竟好久不写作文感觉文笔变差了qwqqwqqwq,将就着看....
原创
1022阅读
8评论
2点赞
发布博客于 3 年前

FFT--luoguP3723 [AH2017/HNOI2017]礼物

传送门可以设增加的自然数为ccc,原式就是∑i=1n(xi+c−yi)2\sum_{i=1}^n(x_i+c-y_i)^2∑i=1n​(xi​+c−yi​)2展开以后就是∑i=1n(xi2+2×xi×c−2×xi×yi−2×yi×c+yi2)\sum_{i=1}^n(x_i^2+2\times x_i\times c-2\times x_i\times y_i-2\times y_i\time...
原创
107阅读
0评论
0点赞
发布博客于 3 年前

LCT+树剖+线段树+dfs序--bzoj3779: 重组病毒

传送门一道数据结构综合神题(敲的我手都要断了首先看三个操作,每次一个新病毒会感染一条链,而每个点用的时间就是到根的链上不同病毒的数量和,查询的时候相当于查整个子树的时间和。很重要的一个思想是,当一个新病毒感染时,就像LCTLCTLCT里的accessaccessaccess一样,当一条虚边变成实边,说明它遇到了一个不一样的病毒,就要对它祖宗的另外一些子树sum+1sum+1sum+1,这个的...
原创
89阅读
0评论
0点赞
发布博客于 3 年前

树剖+线段树+dfs序+LCA--bzoj3083 遥远的国度

传送门一道树剖线段树维护dfsdfsdfs序的好题,首先换根的时候考虑一个点的子树的变化,分类讨论:设当前根为rootrootroot,询问点为xxx1.x在root的子树中,x的子树不变1.x在root的子树中,x的子树不变1.x在root的子树中,x的子树不变2.x不在root到原根的路径上,x的子树不变2.x不在root到原根的路径上,x的子树不变2.x不在root到原根的路径上,x...
原创
79阅读
0评论
0点赞
发布博客于 3 年前

Maximum Minimum identity

一个叫做min−maxmin-maxmin−max容斥的东西大概就是:max(a,b)=a+b−min(a,b)max(a,b)=a+b-min(a,b)max(a,b)=a+b−min(a,b)max(a,b,c)=a+b+c−min(a,b)−min(b,c)−min(a,c)+min(a,b,c)max(a, b, c) = a + b + c - min(a, b) - min(b,...
原创
96阅读
0评论
0点赞
发布博客于 3 年前

莫比乌斯变换(FMT)/子集和变换--luogu3175 [HAOI2015]按位或

传送门今天讲子集和变换,其实感觉和高维前缀和差不多就着这道题学习了一下FWTFWTFWT
原创
441阅读
0评论
0点赞
发布博客于 3 年前

高维前缀和

高维前缀和就是求关于一个集合子集(或超集)的状态的和牛客有一道题写的很好传送门题面就已经说明了高维前缀和的原理链接:https://ac.nowcoder.com/acm/contest/167/C来源:牛客网对于一个一维数组求部分和,可以使用如下代码for (int i = 1; i <= n; i++) { a[i] += a[i - 1];}对于一个二维数组...
原创
1294阅读
0评论
1点赞
发布博客于 3 年前

LCT--luogu P2173 [ZJOI2012]网络

传送门LCTLCTLCT裸题,开ccc个lctlctlct就好了板子还是不太熟qwqqwqqwq不过这道题的修改边的操作还是比较有意思的一开始写的复杂而且还不太对,改了之后就AAA了#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#inclu...
原创
47阅读
0评论
0点赞
发布博客于 3 年前

【模板】Link-Cut-Tree

模板题LCT的讲解略过···参考别人的博客简单来说就是用splaysplaysplay维护一棵树的某条链上的信息主要操作有:accessaccessaccess:连通一个点到根的链makerootmakerootmakeroot:将xxx变成根findrootfindrootfindroot:找到树根linklinklink:将两个点连上边cutcutcut:删掉两个点之间的边s...
原创
47阅读
0评论
0点赞
发布博客于 3 年前

平衡树--[ZJOI2007]报表统计

传送门平衡树裸题,用multisetmultisetmultiset和堆好像也能做就是用两个平衡树分别维护相邻两数差和每个数的数值,然后求相邻两数差最小值就是求第一个平衡树里的最小值,求任意两数差最小值就用第二个平衡树根查一下前驱后继这样维护一下最小值就好了但写平衡树的话就是一个卡常神题了···之前一直ttt掉一个点,改了改insertinsertinsert就过了(吸氧吸氧)#inc...
原创
39阅读
0评论
0点赞
发布博客于 3 年前

高中数学题 推式子+高精度--kyle

题目:一个三角形,每条 边的长度都是1到N中的正整数,这三条边能组成多少个不同的三角形呢n≤109n\le 10^9n≤109solution:啊这就是个妥妥的高中数学题,涉及到数列,几何等知识设f[n]f[n]f[n]为答案,f[n]=f[n−1]+g[n]f[n]=f[n-1]+g[n]f[n]=f[n−1]+g[n]g[n]g[n]g[n]就是至少一条边是nnn的时候的合法方案数...
原创
85阅读
0评论
0点赞
发布博客于 3 年前

tarjan求点双+树上倍增/圆方树+并查集--business

对我没打错名字,就是businessbusinessbusiness题目:solution:这道题有很多种写法,先说我的:先tarjantarjantarjan求点双,一个点双里的点都可以到达那个最小的点,然后每个割点向他在的点双连边建出一棵树,然后用STSTST表一类的树上倍增方法求解,细节很多,注意有些数组空间要开大一倍,注意特判s,ts,ts,t在同一个点的情况还有一种高级写法...
原创
117阅读
0评论
0点赞
发布博客于 3 年前

2018.11.7【模板题】模拟赛

模板题又没有AKAKAK手残祭首先是STSTST表,这个虽然不怎么常写但还是AAA了#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define maxn 200005#define int long...
原创
81阅读
0评论
0点赞
发布博客于 3 年前

字符串哈希--聪聪的加法等式

题目:聪聪昨天费了九牛二虎之力终于计算出一个形如 A+B=CA+B=CA+B=C 加法算式。但是调皮的明明,却将他计算的式子中的加号和等号用橡皮擦去,于是式子只剩下形如 ABCABCABC 的数字串了。然而气急败坏的聪聪却怎么也还原不出原来的等式了,这可怎么办呀?你能帮帮他吗?长度≤106\le 10^6≤106solution:因为和只能和大加数位数一样活着多一位,所以枚举AAA,然...
原创
138阅读
0评论
0点赞
发布博客于 3 年前

概率+思路--luoguU50923 听我说,海蜗牛

erkkierkko出的题一开始以为这些左括号都是独立的就那样扫一遍随便算一下就行了但其实不是这样,就是如果左边一个括号已经匹配了这个右括号,它就不能匹配其他左括号了那这样的话就很麻烦了,而且同一个右括号对每个左括号的贡献是不一样的,所以可以先写个搜索打表找规律 ,把所有的pi,jp_{i,j}pi,j​表示左括号为iii右括号为jjj的概率列成一个矩阵,发现每一行每一列的和都得是111,感...
原创
132阅读
0评论
0点赞
发布博客于 3 年前

2018.11.6【模板题】模拟赛

模板题考试没有AKAKAK身败名裂被罚跑圈祭(虽然给ghostcaighostcaighostcai分了两圈但他并没有跑完首先是快速幂。。原来写的时候最后没有%mod\%mod%mod后来被一组数据hackhackhack了就是10 0 110\ 0\ 110 0 1应该输出000我输出的111。。。#include<iostream>...
原创
124阅读
0评论
0点赞
发布博客于 3 年前

树状数组求LCS及LCS个数

解锁LCSLCSLCS新姿势这个求法是nlognnlognnlogn的,但如果有许多重复的就会被卡成n2×log(n2)n^2\times log(n^2)n2×log(n2),所以如果是排列的话就会很好用,不过目前应该也没有低于n2n^2n2的LCSLCSLCS求法?所以说不管有没有重复的应该都能过找到了一个不那么裸的题luogu2516做法:首先预处理出aaa串中每个字符出现的位置,可...
原创
233阅读
2评论
0点赞
发布博客于 3 年前

矩阵快速幂优化状压DP--骨牌

题目:有一个H×WH\times WH×W 的棋盘。 她想知道,用 1×21\times 21×2 的骨牌覆盖这个棋盘,有多少种不同的方案。 一个合法的方案满足所有骨牌的边都与棋盘的边平行,骨牌之间没有重叠,并且骨牌的所有部分都在棋盘内。 两种方案不同当且仅当在一种方案中,一个格子被骨牌覆盖,在另一种方案中,这个格子没有被骨牌覆盖。H≤5,W≤1018H\le 5,W\le 10^{18}H...
原创
134阅读
0评论
0点赞
发布博客于 3 年前