自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Maxwei_wzj的OI世界

Imagination is more important than knowledge.

  • 博客(39)
  • 收藏
  • 关注

原创 小W的神奇口胡

这里会口胡一些乍一看会做,或者没时间写(或者懒得写)的题目,或者一道题目的其他解法,应该很少更新,不用等了……【BZOJ3456】城市规划-分治NTT 测试地址:城市规划 做法:本题需要用到分治NTT。 实际上这题做法挺多的,我用多项式求逆写了这一题,据说还可以用多项式求ln写,有待学习。 令f(n)f(n)f(n)为我们要求的答案,g(n)g(n)g(n)为不要求连通时的答案,显然g...

2018-06-20 19:38:27 445

原创 【BZOJ4899】记忆的轮廓-期望DP+决策单调性优化DP

测试地址:记忆的轮廓 做法:本题需要用到期望DP+决策单调性优化DP。 令f(i,j)f(i,j)f(i,j)为前iii个点用了jjj个存档点,其中第jjj个存档点用在第iii个点上的最小期望步数,我们显然可以得出状态转移方程: f(i,j)=min{f(k,j−1)+g(k,j)}f(i,j)=min{f(k,j−1)+g(k,j)}f(i,j)=\min\{f(k,j-1)+g(k,j)...

2018-06-29 17:52:23 433

原创 【BZOJ2216】Lightning Conductor(POI2011)-决策单调性优化DP

测试地址:Lightning Conductor 题目大意:给定一个数列AAA,对每个AiAiA_i求一个最小的非负整数ppp,使得对于所有jjj,Aj≤Ai+p−|i−j|−−−−−√Aj≤Ai+p−|i−j|A_j\le A_i+p-\sqrt{|i-j|}。 做法:本题需要用到决策单调性优化DP。 今天终于学习了真·决策单调性优化DP,比较开心。这种优化的优化对象通常是我们所说的1D/...

2018-06-28 17:02:51 368

原创 【BZOJ4609】Branch Assignment(WF2016)-最短路+决策单调性优化DP

测试地址:Branch Assignment 题目大意:有一张nnn个点的有向强连通图,其中bbb个点是部门,另有一个点是总部,要把部门分成sss个组,每组之内每两个部门都要相互传递信息,一个部门向另一个部门传递信息,需要从这个部门走到总部,再从总部走到另一个部门,问总的传递距离的最小值。 做法:本题需要用到最短路+决策单调性优化DP。 首先,我们显然要用两次SPFA求出所有点到总部,以及总...

2018-06-28 09:28:47 512

原创 【LOJ2585】新家(APIO2018)-线段树+multiset

测试地址:新家 做法:本题需要用到线段树+multiset。 这题题意有点复杂,先理一下:数轴上有一些带颜色的点,每个点会在某个特定的时间段出现,若干个询问,每次询问某个时刻上离一个坐标距离最远的颜色的距离。坐标和颜色的距离定义为,该坐标与当前出现的所有该颜色的点的最小距离。 理完了题意,就可以想题了。首先因为没有强制在线,所以显然将操作按时间排序,而且把某个时间段出现某个点变成两个操作:某...

2018-06-25 20:12:03 321

原创 【BZOJ3925】地震后的幻想乡(ZJOI2015)-概率期望+子集状压DP

测试地址:地震后的幻想乡 做法:本题需要用到概率期望+子集状压DP。 题目要求最小生成树最大边的期望,我们知道这个值等于最大边的期望排名(从小到大)/(m+1)/(m+1)/(m+1),因为提示里说了,mmm个[0,1][0,1][0,1]内的随机变量的第kkk小值的期望为km+1km+1\frac{k}{m+1}。 那么令LLL为最大边的排名,则有: ans=E[L]m+1=1m+1∑m...

2018-06-24 20:57:50 211

原创 【LOJ2538】Slay the Spire(PKUWC2018)-DP+组合数

测试地址:Slay the Spire 做法:本题需要用到DP+组合数。 题目要求的就是对于所有抽牌的方案,能得到的伤害值的总和。 我们知道,在使用的强化牌一定的基础上,攻击牌肯定是从大到小取最优。然后要观察到一个结论:如果有强化牌,先出强化牌是最优的,出到没有强化牌,或者只有一张牌可出的时候再出攻击牌。如何证明?因为强化牌的倍数k>1k>1k>1,令出强化牌之前的可出攻击牌数值...

2018-06-24 10:39:15 732

原创 【BZOJ4416】阶乘字符串(SHOI2013)-状压DP

测试地址:阶乘字符串 做法:本题需要用到状压DP。 首先,根据证明(直觉),满足条件的字符串的最小长度仅仅比n2n2n^2小一点点,因此当n>21n>21n>21时,直接输出NO即可。 于是我们就把nnn缩减到了212121的范围,就可以考虑状压了。令f(i)f(i)f(i)为包含集合iii的所有全排列的最短前缀,而nxt(i,j)nxt(i,j)nxt(i,j)为第iii个字符...

2018-06-23 11:24:56 280

原创 【BZOJ2658】小蓝的好友(ZJOI2012)-扫描线+Treap

测试地址:小蓝的好友 做法:本题需要用到扫描线+Treap。 首先,很快想到补集转化,用总的子矩形数(n(n+1)2⋅m(m+1)2n(n+1)2⋅m(m+1)2\frac{n(n+1)}{2}\cdot \frac{m(m+1)}{2})减去不包含任何资源点的子矩形数计算答案。 考虑自上而下用扫描线,每次计算下边界在某一行的,不包含任何资源点的子矩形数目。考虑上边界所在的行,这一行能选为上...

2018-06-22 16:37:55 260

原创 【BZOJ2159】Crash的文明世界-第二类斯特林数+树形DP

测试地址:Crash的文明世界 做法:本题需要用到第二类斯特林数+树形DP。 直接算式子的话,没办法拆开用其它方式算贡献,所以肯定要把这个式子拆开。 根据第二类斯特林数的性质,有: nk=∑ki=0S(k,i)⋅i!⋅Cinnk=∑i=0kS(k,i)⋅i!⋅Cnin^k=\sum_{i=0}^kS(k,i)\cdot i!\cdot C_n^i 其中S(k,i)S(k,i)S(k,i)...

2018-06-22 10:17:47 227

原创 【HDU4336】Card Collector-Min-Max容斥

测试地址:Card Collector 题目大意:nnn张牌,每次有pipip_i的概率抽到第iii张牌,问抽到过所有的牌所需的期望次数。 做法:本题需要用到Min-Max容斥。 很久之前我写过这题的状压DP写法,那个做法时间复杂度为O(n2n)O(n2n)O(n2^n),空间复杂度为O(2n)O(2n)O(2^n),而今天本人学会了一种新的做法:Min-Max容斥,这个做法比状压DP更加优...

2018-06-21 16:46:05 469

原创 【BZOJ3997】组合数学(TJOI2015)-Dilworth定理+DP

测试地址:组合数学 做法:本题需要用到Dilworth定理+DP。 我们首先把这些点按坐标从上到下,从左到右排成一排,我们发现在一条路径中选完一个点(x,y)(x,y)(x,y)后,下一个必须选择一个(x′,y′)(x′,y′)(x',y')使得x′≥x,y′≥yx′≥x,y′≥yx'\ge x,y'\ge y,且两个坐标不能同时相等。 进一步研究,我们发现这是一个偏序关系,根据Dilwor...

2018-06-21 11:31:10 275

原创 【LOJ2537】Minimax(PKUWC2018)-树形DP+线段树合并

测试地址:Minimax 做法:本题需要用到树形DP+线段树合并。 很快想到一种定义状态的方式:f(i,j)f(i,j)f(i,j)表示点iii的权值为jjj(离散化后)的概率,然后转移时,因为这是棵二叉树,令sonsonson为当前枚举的儿子,sum(j)sum(j)sum(j)为另一个儿子中权值小于jjj的概率,我们有以下状态转移方程: f(i,j)=∑son∑nj=1f(son,j)[...

2018-06-21 09:37:47 351

原创 【BZOJ3456】城市规划-多项式求逆

测试地址:城市规划 题目大意:求nnn个点带标号简单无向连通图(即无重边,无自环)的数目。 做法:本题需要用到多项式求逆。 如果不要求连通,这题就是水题了,答案显然为2C2n2Cn22^{C_n^2}(即枚举每条边选或不选)。 然而这题显然没那么简单,我们令f(n)f(n)f(n)为我们要求的答案,g(n)=2C2ng(n)=2Cn2g(n)=2^{C_n^2},有如下递推式: g(n)...

2018-06-20 19:17:27 293

原创 【CF487E】Tourists-圆方树+multiset+树链剖分

测试地址:Tourists 题目大意:一个nnn个点mmm条边的无向连通图,每个点有点权,要求维护单点修改,还有若干次询问,每次询问两个点之间的简单路径上的点权最小值最小是多少。 做法:本题需要用到圆方树+multiset+树链剖分。 做过APIO2018-铁人两项的同学应该很快能看出来,我们实际上就是要找一个中间点,使得这个中间点的点权最小,而能作为中间点的点我们在上面那题讨论过了:路径所...

2018-06-19 20:27:46 315

原创 【BZOJ5329】战略游戏(SDOI2018)-圆方树+虚树

测试地址:战略游戏 做法:本题需要用到圆方树+虚树。 显而易见的是,两个点之间路径的必经点,就等于它们之间路径上的所有割点。因此我们很快想到建出圆方树,这样两点间路径上所有的圆点(除去两端)就是对应的割点。而询问一个集合,问能切开集合中某两个点的所有点,那就是求所有这些点两两之间路径的并,答案就等于并集中圆点的数目减去询问集合的大小(因为询问集合内的点不能算作答案)。 树上一个点集两两之间路...

2018-06-19 20:03:07 211

原创 【LOJ2587】铁人两项(APIO2018)-圆方树+树上统计

测试地址:铁人两项 做法:本题需要用到圆方树+树上统计。 首先有个结论:一个点双连通分量内的任意三个点,不管以什么顺序排列,都存在一条简单路径按顺序经过这三个点。 那么如果我们选定了路径的起点和终点,可以作为中间点的点,就是它们之间的路径所经过的所有点双连通分量中的点(除了两端)。于是我们就把圆方树建出来,方点的点权设为对应点双中的点数,为了去重,圆点的点权设为−1−1-1,那么可以作为中间...

2018-06-19 17:07:53 387

原创 【BZOJ1264】基因匹配(AHOI2006)-DP+树状数组

测试地址:基因匹配 做法:本题需要用到DP+树状数组。 考虑最基本的求LCS的DP,令f(i,j)f(i,j)f(i,j)为以第一个串第iii个字符结尾,用第二个串的前jjj个字符进行匹配,能得到的LCS长度。有以下状态转移方程: 当Ai≠BjAi≠BjA_i\ne B_j时:f(i,j)=f(i,j−1)f(i,j)=f(i,j−1)f(i,j)=f(i,j-1); 当Ai=BjAi=B...

2018-06-19 10:16:22 288

原创 【BZOJ4423】Bytehattan(AMPPZ2013)-对偶图+并查集

测试地址:Bytehattan 做法:本题需要用到对偶图+并查集。 因为是不断删边,而且强制在线,所以直接维护格点的连通性不现实。我们发现网格图是个平面图,所以对偶图的连通性应该和原图的连通性有关,于是我们从对偶图的角度去思考。 首先,在原图中是删边的操作,在对偶图中就是连边了,这个性质非常好。其次,我们询问的是每次删除的边的两个端点的连通性,有这样一个结论:如果在对偶图中加上这条边后,对偶...

2018-06-18 11:07:33 361

原创 【LOJ2172】所有公共子序列问题(FJOI2016)-序列自动机+DP+高精度

测试地址:所有公共子序列问题 做法:本题需要用到序列自动机+DP+高精度。 序列自动机,顾名思义,就是能识别一个字符串所有本质不同的子序列的自动机。构建的方法十分简单:只需要从字符串上的每个点,向后面每种字符第一次出现的位置连边即可。唯一要注意的是,就像是所有其他自动机一样,还是要多建立一个空点表示空串的。因此,令字符集大小为sss,字符串长度为nnn,那么构建序列自动机的时间复杂度是O(sn...

2018-06-17 17:32:59 314

原创 【BZOJ2820】YY的GCD-莫比乌斯反演+数论分块+分类讨论

测试地址:YY的GCD 题目大意:求∑p=prime∑ni=1∑mj=1[gcd(i,j)=p]∑p=prime∑i=1n∑j=1m[gcd(i,j)=p]\sum_{p=prime}\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=p],T(≤104)T(≤104)T(\le 10^4)组询问,n,m≤107n,m≤107n,m\le 10^7。 做法:本题需要用到莫比乌...

2018-06-17 12:26:50 275

原创 【CF932E】Team Work-二项式反演+第二类斯特林数

测试地址:Team Work 题目大意:给定n,kn,kn,k,求∑ni=1Cin⋅ik∑i=1nCni⋅ik\sum_{i=1}^nC_n^i\cdot i^k。 做法:本题需要用到二项式反演+第二类斯特林数。 二项式反演的实质是容斥原理,有两种表示形式: f(n)=∑ni=0(−1)i⋅Cin⋅g(i)f(n)=∑i=0n(−1)i⋅Cni⋅g(i)f(n)=\sum_{i=0}^n(...

2018-06-16 23:09:59 345

原创 【LOJ2541】猎人杀(PKUWC2018)-容斥+级数+分治NTT

测试地址:猎人杀 做法:本题需要用到容斥+级数+分治NTT。 要求111号最后一个被射杀,其实就是要求所有人都不能在111号后被射杀。这种要求全部条件满足求方案数/概率的情况,就要考虑容斥,即枚举一个集合SSS,计算强制这SSS个人在111号后被射杀的概率p(S)p(S)p(S),那么答案就等于: ans=∑S(−1)|S|p(S)ans=∑S(−1)|S|p(S)ans=\sum_S(-1...

2018-06-16 17:31:16 1421

原创 【BZOJ4044】Virus Synthesis(CERC2014)-回文自动机+DP

测试地址:Virus Synthesis 题目大意:一开始你有一个空串,有两种操作:1.往串的前面或后面插入一个A,C,G,T中的字符。2.把整个串翻转后接到这个串前面或后面。问最少需要多少次操作能得到一个给定的字符串?len≤105len≤105len\le 10^5。 做法:本题需要用到回文自动机+DP。 显然一个回文串一定存在一个最优方案,使得最后一次操作是翻转操作。而在最后一次翻转操...

2018-06-16 13:54:33 296

原创 【BZOJ2342】双倍回文(SHOI2011)-Manacher+set

测试地址:双倍回文 做法:本题需要用到Manacher+set。 首先看到回文子串,跑一遍Manacher是免不了的了,关键在于如何利用这些信息求最长的双倍回文子串。 考虑枚举整个串的对称轴xxx(显然这个对称轴一定是两个字符之间的位置),令f(x)f(x)f(x)为xxx这个位置的最长回文半径,即以这个位置为对称轴的最长回文子串的半长,那么对于之后的一个位置yyy,定义这个yyy对xxx合...

2018-06-15 15:39:19 235

原创 【LuoguP4609】建筑师(FJOI2016)-第一类斯特林数

测试地址:建筑师 做法:本题需要用到第一类斯特林数。 我们先来分析“可见”这个性质。因为建筑的高度各不相同,所以两个可见建筑之间,一定是若干个比这两个可见建筑高度要小的建筑。而我们知道高度为nnn的建筑无论如何都会被看到,而从这个建筑往两边的可见建筑高度显然是不断减小的。这样,我们把从左(右)边能看到的每一个可见建筑,与它右(左)边下一个可见建筑之间的部分看做一个集合,因为高度为nnn的建筑无...

2018-06-15 08:26:57 315

原创 【BZOJ4408】神秘数(FJOI2016)-主席树+贪心

测试地址:神秘数 题目大意:定义一个集合的神秘数,为不能用其某个子集的和表示的正整数中最小的数,给定一个长为nnn的序列AAA,mmm次询问,每次询问某个区间的神秘数。n,m≤105,∑Ai≤109n,m≤105,∑Ai≤109n,m\le 10^5,\sum A_i\le 10^9。 做法:本题需要用到主席树+贪心。 考虑只有一个询问时要怎么做。首先,将AiAiA_i从小到大一个个加入集合...

2018-06-13 21:00:43 249

原创 【BZOJ1062】糖果雨(NOI2008)-数形结合+二维树状数组

测试地址:糖果雨 做法:本题需要用到数形结合+二维树状数组。 这题看上去非常没有思路,因此我们来一步一步整理一下思路。 首先,我们要发现线段的颜色互不相同,并且移动的速度相等,这就说明它们的运动是周期性的,并且周期都是2len2len2len。原先我们要用一个三元组(t,l,r)(t,l,r)(t,l,r)来表示一条线段,而发现了上面的共性之后,我们就可以用一个二元组(time,length...

2018-06-13 11:38:58 462

原创 【BZOJ4070】雅加达的摩天楼(APIO2015)-分块+最短路

测试地址:雅加达的摩天楼 题目大意:NNN个点排成一排,有MMM只狗,每只狗有一个跳跃能力PPP,初始它在点BBB,这只狗每步可以往左或往右跳PPP个点。现在要从000号狗传信息到111号狗,一只狗可以传信息给同个点的其他狗,问最少跳几步。 做法:本题需要用到分块+最短路。 看到这题,第一个想法就是,从每只狗所在的点BBB向所有点B+xPB+xPB+xP连边权为|x||x||x|的边,然后跑...

2018-06-12 16:31:38 345

原创 【BZOJ2326】数学作业(HNOI2011)-递推+矩阵快速幂

测试地址:数学作业 做法:本题需要用到递推+矩阵快速幂。 令f(i)f(i)f(i)为Concatenate(i)Concatenate(i)Concatenate(i)对mmm取模后的结果,很快能得到一个递推式: f(i+1)=f(i)×10k+i+1f(i+1)=f(i)×10k+i+1f(i+1)=f(i)\times 10^k+i+1 注意到所需的信息:f(i)f(i)f(i)和i...

2018-06-12 10:25:42 215

原创 【BZOJ2734】集合选数(HNOI2012)-状压DP

测试地址:集合选数 做法:本题需要用到状压DP。 看到这种两个东西不能同时取的限制,显然就是个独立集,然而这题并不只是要求独立集,而是要求独立集的数量,所以我们就要观察这个图到底有什么性质。 注意到,一个点xxx会和2x2x2x和3x3x3x连边,于是我们发现点xxx可以走到形如2p3qx2p3qx2^p3^qx这样的点,每一对(p,q)(p,q)(p,q)和一个点一一对应,而从(p,q)(...

2018-06-11 20:24:30 245

原创 【BZOJ3213】抛硬币(ZJOI2013)-期望DP+KMP+高精度

测试地址:抛硬币 做法:本题需要用到期望DP+KMP+高精度。 很容易想到,先用KMP求出信息,然后从一个点iii,要么成功匹配第i+1i+1i+1个字符到达点i+1i+1i+1,要么匹配失败到达某个点fail(i+1)fail(i+1)fail(i+1)。于是令f(i)f(i)f(i)为生成出长度为iii的前缀所需要的期望步数,有状态转移方程: f(i)=f(i−1)+1+(1−pi)(f...

2018-06-11 17:56:23 944

原创 【BZOJ3590】Quare(SNOI2013)-状压DP

测试地址:Quare 题目大意:给定一张无向图,有n(≤12)n(≤12)n(\le 12)个点和m(≤40)m(≤40)m(\le 40)条边,要从里面选出一个边权和最小的包含所有点的边双连通子图,求最小的边权和。 做法:本题需要使用状压DP。 注意到,每一个边双连通分量都可以通过删边成为一个环,而边权都是非负的,所以最优解一定是许多个环接在一起,因此我们可以用一个边双连通分量加上一条链构...

2018-06-09 23:52:22 319

原创 【BZOJ1969】航线规划(AHOI2005)-边双连通分量+树链剖分

测试地址:航线规划 做法:本题需要用到边双连通分量+树链剖分。 注意到,这题有删边操作,又要维护边双连通分量相关信息(从割边自然想到维护边双连通分量),无法维护。注意到没有强制在线,所以我们可以倒过来,变成有加边操作,同时维护边双连通分量,这样就好做了。 首先将边双连通分量缩点,缩完后图变为一棵树,而每加一条边,实际上就是把两个端点在树中的路径合并为一个点。虽然维护合并貌似可以用并查集暴力维...

2018-06-09 18:17:58 298

原创 【BZOJ1185】最小矩形覆盖(HNOI2007)-旋转卡壳

测试地址:最小矩形覆盖 做法:本题需要用到旋转卡壳。 根据直觉(实际上是我不会证),最小的矩形的一边一定在凸包上,于是我们在凸包上枚举其中的一边,顺便开三个指针求出对踵点,以及在当前边方向上最远的两个点,即可求出矩形挨着的点,这样就可以求出矩形的其它三个点了。于是我们就解决了这一题,求凸包的时间复杂度为O(nlogn)O(nlog⁡n)O(n\log n),后面算法的时间复杂度为O(n)O(n...

2018-06-09 11:44:59 248

原创 【BZOJ1069】最大土地面积(SCOI2007)-旋转卡壳

测试地址:最大土地面积 做法:本题需要用到旋转卡壳。 不难想到,最优的四个点一定都在凸包上,而一个四边形可以通过一条对角线切割为两个三角形,因此我们枚举对角线,在对角线的端点移动时顺便求出两边最大的三角形面积即可。显然三角形的另一个顶点是单调向同一个方向移动的,而且面积是一个单峰函数,用两个指针即可维护,时间复杂度为O(n2)O(n2)O(n^2)。 (太菜了,连这种计算几何基础题都不会做了...

2018-06-08 17:01:09 284

原创 【BZOJ3545/BZOJ3551】Peaks(ONTAK2010)-Kruskal重构树+主席树

测试地址:Peaks原版,Peaks加强版 题目大意:一张n(≤105)n(≤105)n(\le 10^5)个点m(≤5×105)m(≤5×105)m(\le 5\times 10^5)条边的无向图,点和边都有权,q(≤5×105)q(≤5×105)q(\le 5\times 10^5)个询问,每次询问从一个点vvv能仅通过走边权不超过xxx的边走到的所有点中,第kkk大的点权。原版不强制在线,...

2018-06-08 13:08:17 301

原创 【BZOJ3451】Normal-概率期望+点分治+NTT

测试地址:Normal 题目大意:将点分治中找分治重心的过程,变成随机在当前块中取一个点,点分治的每一步骤(即处理一块)消耗的时间为块的大小,问总消耗时间的期望。 做法:本题需要用到概率期望+点分治+NTT。 首先根据期望的线性性,不难想到分开计算每个点被计算的期望次数,累加起来就是答案。而每个点被计算的次数,等于它在点分树上的深度(根深度为111),那么对于一个点xxx,某点yyy(可以是...

2018-06-07 22:27:33 347

原创 【BZOJ2436】NOI嘉年华(NOI2011)-区间DP+决策单调性优化

测试地址:NOI嘉年华 做法:本题需要用到区间DP+决策单调性优化。 因为两个会场不能同时有活动,不难想到活动一定会排成,在A会场一段,又在B会场一段,这样交替的形式。很快想到区间DP来决策每一段是在A会场还是B会场。 我们首先将所有时刻离散化,接着为了转移方便,我们显然应该处理出num(i,j)num(i,j)num(i,j):时刻i,ji,ji,j之间的活动数量。这个直接O(n3)O(n...

2018-06-07 12:09:09 327

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除