- 博客(405)
- 资源 (1)
- 收藏
- 关注
原创 【总结】最小树形图 朱刘算法
前言省选复习的时候,发现没写博客。。。来补一篇。。最小树形图就是有向图的最小生成树,满足从根出发,能到达所有节点,且边权和尽可能小。朱刘算法很暴力的方法,每个点在指向它的边中,选择最小的一条(根节点不选)。然后答案加上每个点选出的边权。然后可能有环,就缩环成点,然后改一下边权val’-=val,表示之后若选择val’,则必须断开val一直这样做下去,直到某一次找不到环了就停止...
2019-04-04 15:13:34 693
原创 【后缀自动机】Hihocoder#1449 : 后缀自动机三·重复旋律6
分析:后缀自动机板子题。维护endpos集合大小。复制出来的点不代表任何一个前缀,所以其endpos集合大小为所有fail指向它的endpos之和,否则其endpos集合大小为所有fail指向它的endpos之和+1#include<cstring>#include<algorithm>#include<cmath>#include<cstd...
2019-04-02 10:47:52 367
原创 【LCT】BJOI2014大融合
分析:比较简单的LCT维护子树板子题(set都用不着…)#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#define SF scanf#define PF printf#define MAXN 100010using namespace std...
2019-04-01 18:46:29 359
原创 【虚数】BZOJ3572[HNOI2014]世界树
题意:给出一颗树,每次选中m个点,对于树上任意一个点,会被其最近的一个选中点包含(相同有编号小优先),求每个选中点包含了多少个点。分析:之前写过两次都没写博客。。结果复习板题的时候,连题意都不知道。。。方法就是虚数板子#include<cstdio>#include<cstring>#include<algorithm>#include<...
2019-04-01 16:39:23 227
原创 【复杂度玄学】【数学】省选模拟51nod 乘法表
分析:搞不懂为什么理论复杂度那么大。。但是的确跑不满。。。根据题意,得到g∣10dc+dbb′+10dca′g|\frac {10^{dc+db}} {b'}+\frac {10^{dc}} {a'}g∣b′10dc+db+a′10dc其中g=(a,b),a′=a/g,b′=b/gg=(a,b),a'=a/g,b'...
2019-04-01 07:51:04 266
原创 【FWT】【复杂度玄学】BZOJ5019[Snoi2017]遗失的答案
分析:至今仍然不知道。。。为什么N以内的,是L的因数且是G的倍数的数不超过1000个。。。缸道理不应该是N\sqrt NN个吗。。。看来是我孤陋寡闻了。。。。合并的时候用一下FWT#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include&...
2019-03-30 09:19:18 310
原创 【点分治】VW's Contest #1 C
分析:考场上没来得及看其实也不难点分治水水就过了每次加入链最大值最小的,这样每次加入时,能够保证它是所有已加入点的最大值。#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#include<vecto...
2019-03-29 16:21:14 197
原创 【杜教筛】【容斥】VW's Contest #1 B
分析:要是在一年前,我估计会分类到莫比乌斯反演。。。很显然的莫比乌斯函数来容斥,只不过算10910^9109级别的前缀和需要用杜教筛#include<cstdio>#include<cstring>#include<algorithm>#include<map>#include<vector>#define SF scan...
2019-03-29 16:19:43 205
原创 【常系数线性递推】51nod1538 一道难题
分析:懒得去卡常。。。#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#define SF scanf#define PF printf#define MOD 104857601#define MAXN...
2019-03-28 22:23:04 216
原创 【容斥】【状压DP】【矩阵加速】B君的吸引
分析:硬核数据范围欺诈。。。数据开大了可还行。。。考场上想了三个小时都以为是骗分。。。其实还是蛮简单的。就是有些坑二维的平移,不一定平移(i,j)时,每个i*j的矩阵都必须一模一样。考场上被这个毒了好久。。。#include<cstdio>#include<cstring>#include<algorithm>#include<vecto...
2019-03-28 20:30:22 213
原创 【伯努利数】【MTT】51nod 1258序列求和
分析:Sk(n)=1k+1∑i=0i≤kCk+1iBink+1−iS_k(n)=\frac {1} {k+1}\sum_{i=0}^{i\leq k}C_{k+1}^{i}B_in^{k+1-i}Sk(n)=k+11i=0∑i≤kCk+1iBink+1−i#include<cstdio>#include<algorithm>#include<vect...
2019-03-27 17:40:50 241
原创 【总结】MTT算法
前言51nod1258真是道好题。。。一道题,学会了3个东西:伯努利数,自然数幂和,MTT…前置科技(其实学MTT的人估计都会。。。)CRT(中国剩余定理)NTTNTT算法的局限众所周知,NTT是通过原根的性质来进行快速傅里叶变化不过,同时也对其模数做出了要求,对于一个模数M,若φ(M)\varphi(M)φ(M)中,2的次数较少(小于要转的序列长度)就不可做了所以,也因此衍生出...
2019-03-27 17:34:56 4116
原创 【总结】伯努利数
分析:伯努利数满足:B0=1,∑i=0i≤nBiCn+1i=0B_0=1,\sum_{i=0}^{i\leq n} B_iC_{n+1}^i=0B0=1,i=0∑i≤nBiCn+1i=0根据这个性质,可以推导出一些结论:∑i=0i≤nBiCn+1i=0\sum_{i=0}^{i\leq n}B_iC_{n+1}^i=0i=0∑i≤nBiCn+1i=0∑i=0i<...
2019-03-27 17:07:49 704
原创 【多项式】【生成函数】51nod1514 美妙的序列
分析:感觉生成函数在这有点大材小用了。。。。这个合法的序列就是指任意一个前缀都不能是1-i的排列设f(n)f(n)f(n)表示用前n个数组成的合法排列个数。那么f(n)=n!−∑i=0i<nf(i)∗(n−i)!f(n)=n!-\sum_{i=0}^{i<n}f(i)*(n-i)!f(n)=n!−∑i=0i<nf(i)∗(n−i)!移项∑i=0i≤nf...
2019-03-26 21:39:49 306
原创 【多项式】【字符串】【manachar】BZOJ3160万径人踪灭
分析:还是比较板的多项式老题这题唯一花哨一点的,就是要求回文串不能全部连续。而我们知道,全部连续的话可以用manachar算出来。那么剩下的就是算所有的回文子序列的方案数了。显然fft一发,对每个位置,算出其左边和右边对称的个数,记为f(i)f(i)f(i)那么以i为中心的回文子序列数量就是2f(i)−12^{f(i)}-12f(i)−1#include<cstdio>...
2019-03-26 20:17:18 236
原创 【圆方树】【启发式合并】CodeChef Chef and Sad Pairs
分析:圆方树板子题每个点维护一下它子树中的颜色。启发式合并算贡献不过也可以分颜色用虚树做#include<cstdio>#include<cstring>#include<vector>#include<map>#include<algorithm>#define SF scanf#define PF printf...
2019-03-25 23:19:26 251
原创 【圆方树】CodeForces487E Tourists
分析:圆方树板子题。每个点方点放个multiset维护其子圆点的最小值询问和修改用树剖#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#include<set>#define SF scanf#define PF printf#d...
2019-03-25 23:12:28 176
原创 【圆方树】BZOJ3331 压力
题目:分析:圆方树板子题建出圆方树后,直接树上差分即可#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#define SF scanf#define PF printf#define MAXN 400010using namespace s...
2019-03-25 11:50:34 226
原创 【线段树】省选模拟51nod 小朋友的笑话
题目:分析:辣鸡51nod前两题迅速切掉花了1h先写了一个O(nnlogn)O(n\sqrt n logn)O(nnlogn)的算法,T了,开始想->放弃:1h再写了一个O(nlog2n)O(n\log^2 n)O(nlog2n)的算法,又T了,开始想->放弃:2h最后无奈又想了一个O(nlogn)O(n log n)O(nlogn)的算法,没调完GG最后一看O(...
2019-03-25 10:46:44 355
原创 【多项式】【DP】省选模拟51nod抽卡大赛
题目:分析:O(n4)O(n^4)O(n4)的DP很容易能想到定义DP[i][j][k]DP[i][j][k]DP[i][j][k]表示第i个人选j时,有k个人比它小的概率然后就能直接算期望了。不过这玩意显然要T发现,对于一个已经固定的i,j,那么剩下的所有人的所有情况本质上只有2种:比Ai,jA_{i,j}Ai,j小,比Ai,jA_{i,j}Ai,j大。那么可以把每个人比它小...
2019-03-25 10:23:03 218
原创 【DP】【动态DP】BZOJ5210 最大连通子块和
分析:动态DP板子题,DP定义式为f(i,0),f(i,1)f(i,0),f(i,1)f(i,0),f(i,1)分别表示第i为根的子树中的最大值,以i为根的子树的最大答案,以及第i为根的子树中,与i相连的最大联通子树。转移:f(x,1)=max{∑f(u,1)+valx,0}f(x,1)=\max\{\sum f(u,1)+val_x,0\}f(x,1)=max{∑f(u,1)+valx...
2019-03-23 16:41:44 335
原创 【总结】动态DP&全局平衡二叉树
前言:本算法是树剖DDP算法的加速版,复杂度更小(不是特意卡树剖其实看不出来),但还是比较好写,因此在这里提一下动态DP动态DP听起来很黑科技,但其实并不难首先,能动态的DP本身就很少,需要满足很多限制而且一般动态DP的题都会给普通DP留部分分,如果有暴力写得好的,甚至可以在低风险下拿到和DDP差不多的分。扯回正题,动态DP就是把常规DP的转移用矩阵(其实不一定是矩阵,用数据结构特...
2019-03-23 16:11:59 492
原创 【DP】省选四校联考 画画图
分析:这样建树的深度期望是N\sqrt NN的。然后可以暴力dp了。边权从小到大依次考虑贡献,比其小的算作-1,比其大的算作1,无非就是求这条边两侧边权和为0的连通子树方案数。深度很小,所以暴力DP即可。#include<cstdio>#include<cstring>#include<algorithm>#include<cmath...
2019-03-23 09:46:15 180
原创 【数学】省选四校联考 开开车
分析:这题超有(e)趣(xin)的。。。(又是一道结论题。。。)结论:对于一个三角划分(即题目中的划分方式),每次选择一条划分的边,将全图分为两个多边形,再各自选择一条划分的边,递归操作,一定存在某种方案,使得在很小的层数内全部划分为三角形。。。有了这个结论,这题就很好做了。可以每次选择那条边后,其左侧的点到达右侧的点一定经过这两个点中的一个,因此只需要把这两个点到达所有其他点的最短路...
2019-03-23 09:38:08 167
原创 【数学】省选四校联考 D1T1考考试
分析:显然,一个萌的数,必然满足其所有的后缀都是萌的数。所以,我们可以通过不停地在最高位加值来得到新的萌数。还有一个结论:设这个萌的数表示为:AkAk−1Ak−2……A0A_kA_{k-1}A_{k-2}……A_0AkAk−1Ak−2……A0则其必然满足:Ak∗(10k−2k)+Ak−1∗(10k−1−2k−1)+……+A0∗(100−20)=0 (mod&nbs...
2019-03-23 09:28:05 153
原创 【分块】异或与区间加
分析:非常毒瘤的题目要解出此题,不得不考虑部分分算法当aia_iai的值很小时,怎么做?首先,由于答案是区间加,很容易想到差分,设fi=Bi−Bi−1f_i=B_i-B_{i-1}fi=Bi−Bi−1可以依次枚举每一个aia_iai,求出xor和为aia_iai的所有区间的贡献。对于这个,可以枚举每个位置作为左端点的情况:类似地(但实现上并不类似)于是,接下来...
2019-03-22 12:45:05 801
原创 【竞赛图】【DP】最长路径
分析:很显然,最长路径一定是唯一的。考虑这么证明:对终点v而言,所有不在路径上的点一定指向它。然后,对于次终的点u而言,如果它指向任意一个不在路径上的点,那么可以通过u->x->v,得到一条更长的路径,所以所有不在路径上的点也一定指向它……综上,除了最长路径以外,所有点都指向这条路径。那么,就可以DP了定义DP(i,j)DP(i,j)DP(i,j)表示:i个点的竞赛图...
2019-03-22 12:15:40 688
原创 【Bitset】友好城市
分析:分块+st表+bitset卡常把公路分成k块,内部通过bitset处理出连通状况。每次询问,把连续的一些块通过st表得到边,再用两次dfs求强连通分量的方法,合并这些边,得到新的连通状况。#include<cstdio>#include<cstring>#include<cstdio>#include<cmath>#incl...
2019-03-22 11:12:46 205
原创 【贪心】BZOJ3749[POI2015]Łasuchy
分析:如果vali∗2<vali+1val_i*2<val_{i+1}vali∗2<vali+1,那么i必然选择i+1所以,我们可以把所有这种情况全部找出来。然后,考虑剩下的情况中,是否存在vali<vali+1val_i<val_{i+1}vali<vali+1的这种情况下iii选择i+1i+1i+1,否则iii...
2019-03-20 22:47:49 307
原创 【总结】【随机化算法】
前言考试就像一盒巧克力,你永远不知道你恶心了两个小时的T1是不是随机化算法简介作为一种算法,更不如说是一类套路,这类套路又大致可分为三大类:1、有错误概率,但经过数次操作后,每次都错的概率极低。(此类大多为最优性问题)2、时间不确定,但经过数次操作后,仍未出解的概率极低。(此类大多为存在性问题)3、精度要求不高,可以通过其他模型大致推断解的范围。(例如多边形面积≈点打在多边形内的概率...
2019-03-18 21:07:23 627
原创 【总结】【筛法】Min_25筛
简介:对于积性函数f(x)f(x)f(x)求∑i=1i≤nf(i)(其中n≤1011左右)\sum_{i=1}^{i\leq n} f(i)(其中n\leq 10^{11}左右)i=1∑i≤nf(i)(其中n≤1011左右)必须满足的条件是:当p为质数时,F(P)F(P)F(P)必须能表示为一个多项式的形式,即F(P)=A0+A1P+A2P2+……F(P)=A_0+A_1P+A_2P^2...
2019-03-18 20:40:19 301
原创 【数据结构】【LCT】绝版题
题意:分析:很裸的LCT维护子树信息。很显然,如果选中的点从u到v,那么总代价是+P-Q,说白了只跟两侧的点数有关。因此,只要从根出发,找每个儿子:如果满足其子数权值和*2超过了总权值和,那么向这条边走,一定会使得答案更优。所以我们唯一需要做的,就是统计每个点的子树权值和即可。只不过这题好在一不换根二不改子树,所以就那个set存一下虚儿子的信息即可。#include<cs...
2019-03-13 17:40:43 417
原创 【构造】劲爆题
题意:分析如果可以使得二分图的某一侧全为0,另一侧全不为0,那么一定可以满足条件。显然,左侧点权之和=右侧点权之和(mod 3)因此,不为0的一侧就必须满足点权和mod 3=0这个限制是非常弱的:如果这一侧总点数为3∗k3*k3∗k,那么直接所有都为1即可。如果为3∗k+13*k+13∗k+1,那么拿两个数来换成2.如果为3∗k+23*k+23∗k+2,那么拿一个数来换成2.#...
2019-03-13 17:34:38 258
原创 【容斥】【DP】基本题
题意:分析:比较恶心的DP套容斥题。因为排列个数=所有环排列循环节长度。可以很容易算出排列个数,但要求其对应的环排列个数。有个很直观的思路:求出每个环排列个数*其循环节个数的和,将这个和除以排列长度,就能得到换排列个数。然后利用公式∑d∣nφ(d)=n\sum_{d|n}\varphi(d)=n∑d∣nφ(d)=n于是就可以枚举一个数kkk,求出所有循环节个数为kkk这个数的...
2019-03-13 17:30:03 345
原创 【状压DP】TopCoder15311 AllInclusiveString
题意:叒是那个老船儿长写的题意:分析:显然,每个字母最多出现2次。如果出现3次,中间那次就可以省掉。#include<cstdio>#include<cstring>#include<algorithm>#define SF scanf#define PF printf#define MOD 998244353#define MAXM ...
2019-03-13 16:27:00 168
原创 【BSGS】【数论】TopCoder15277 WrongBase
题意:还是那个船长写的题意:分析:首先,已知的是:Yi≡gxiY_i\equiv g^{x_i}Yi≡gxi然后要求hxih^{x_i}hxi,如果算出T(h=gT)T(h=g^T)T(h=gT)那么hxi=gT×xi=YiTh^{x_i}=g^{T\times x_i}=Y_i^Thxi=gT×xi=YiT#include<cstdio>#includ...
2019-03-13 16:12:16 214
原创 【单调栈】COCI2018/2019 strah
题意:一个老村花写的题意:分析:很简单的单调栈水题。。。从左往右依次计算每一行。。。然后就可以用单调栈+等差数列求和即可。#include<cstdio>#include<cstring>#include<cmath>#include<vector>#define SF scanf#define PF printf#def...
2019-03-13 16:02:49 736
原创 【DP】【树形DP】Splot
题意:分析:很有毒的树形DP题每个串联和并联都可以看作:新加一个点,将串(并)联的两个点作为新点的儿子。然后,可以记录4种状态进行树形DP转移分串并联讨论一下就可以了。#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<...
2019-03-13 15:37:59 567
原创 【随机化】【树形DP】【状压DP】BZOJ5232[Lydsy2017省队十连测]好题
分析k很小。。。如果所有颜色都在k以内,那么直接状压即可。如果不在呢?那么随机将某种颜色,映射到k以内的另一个颜色。换言之,我们认为所有映射到同一位置的颜色相同。显然,除了最优策略,其他的情况一定不优于最优策略。那么,一次的正确性显然就是:k!kk\frac {k!} {k^k}kkk!即最优的k个颜色:能找出最优解的情况/总的映射情况。一次的正确率大约为0.03做个50次左右就接...
2019-03-08 21:42:17 399
原创 【树形DP】COCI2018/2019 Deblo
分析:非常水的树形DP+二进制分组。每条路径在其最高处计算。Dp[i][j][0/1]Dp[i][j][0/1]Dp[i][j][0/1]表示在i的子树中,到达i的路径在第j位为0/1的方案数。#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&lt;algorithm&gt;#include&lt;cmath&
2019-03-06 21:59:51 517 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人