自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

女装的你,如此好看!

咸鱼翻身,终成大佬。

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

原创 [BZOJ1488][HNOI2009]图的同构(Polya定理+组合数)

考虑把这个图视为n" role="presentation" style="position: relative;">nnn阶完全图,每一条边可以染成两种颜色0" role="presentation" style="position: relative;">000和1" role="presentation" style="position: relative;">111。那么可以根据Polya

2018-01-31 16:28:37 225

原创 [学习笔记]莫比乌斯反演常见模型

莫比乌斯反演常用的公式就是这两个: 1、∑d|nμ(d)=[n=1]" role="presentation" style="position: relative;">∑d|nμ(d)=[n=1]∑d|nμ(d)=[n=1]\sum_{d|n}\mu(d)=[n=1] 2、∑d|nϕ(d)=n" role="presentation" s

2018-01-31 15:48:20 765

原创 [BZOJ1879][Sdoi2009]Bill的挑战(状压DP)

状压DP。定义状态f[i][S]" role="presentation" style="position: relative;">f[i][S]f[i][S]f[i][S]表示前i" role="presentation" style="position: relative;">iii位,能匹配的字符串集合为S" role="presentation" style="position: rela

2018-01-31 13:57:07 335

原创 [BZOJ3530][Sdoi2014]数数(AC自动机上数位DP)

把所有的模式串构建成一个AC自动机。 定义状态:f[i][u]" role="presentation" style="position: relative;">f[i][u]f[i][u]f[i][u]表示到了第i" role="presentation" style="position: relative;">iii位,走到AC自动机上的节点u" role="presentation" st

2018-01-31 13:44:57 242

原创 [BZOJ4568][Scoi2016]幸运数字(线性基+倍增)

看到最大异或和,想到线性基。 线性基参考链接1:http://blog.csdn.net/qaq__qaq/article/details/53812883 线性基参考链接2:https://www.cnblogs.com/ljh2000-jump/p/5869991.html 考虑使用倍增算法: f[u][i]" role="presentation" style="position:

2018-01-20 17:31:16 233

原创 [BZOJ4069][Apio2015]巴厘岛的雕塑(二分+DP)

直接DP不可做(因为按位取或不满足最优化原理)。 而求最大/小与/或/异或和,可以考虑利用二分的思想,在二进制意义下从高到低确定答案的每一位。在此题中要求最小或和,因此从高往低考虑到每一位时,这一位能为00就为00,否则就为11。 而如何判断能否为00,就可以DP了。设当前考虑到第xx位(最低位为第00位),当前结果为ansans(ansans的第00位到第x−1x-1位都暂时定为00):

2018-01-20 17:14:20 276

原创 [BZOJ1926][Sdoi2010]粟粟的书架(二分答案+前缀和+主席树)

考虑一种暴力做法:把给定的子矩形内的所有书取出来,按照厚度从大到小排序,然后贪心从左往右考虑,如果排序之后前kk本书的厚度之和小于HH,前k+1k+1本书的厚度大于等于HH,那么询问的结果就是k+1k+1。否则如果给定子矩形内所有书的厚度之和小于HH,那么无解。 而此题从数据点上,实际是两个问题: 1、一个R×CR\times C的矩形,每次询问一个子矩形的结果,R,C≤200R,C\leq2

2018-01-20 16:31:57 276

原创 [BZOJ4516][Sdoi2016]生成魔咒(后缀数组+set/后缀自动机)

解法一:后缀数组+set国家集训队论文《后缀数组——处理字符串的有力工具 》中介绍过,长度为n" role="presentation" style="position: relative;">nnn的字符串不同的非空子串个数,等于 ∑i=1n(n−sa[i]+1−height[i])" role="presentation" style="tex

2018-01-19 20:39:54 232

原创 [BZOJ3992][SDOI2015]序列统计(DP+原根+NTT)

考虑一个DP方案: f[i][j]f[i][j]表示到序列的第ii个数,乘积模MM等于jj的序列个数。 然而,O(M2N)O(M^2N)的朴素DP和O(M3logN)O(M^3\log N)的矩阵快速幂都过不去。 考虑到如果不是乘积模MM等于jj,而是和模MM等于jj, 那么可以利用快速幂+卷积实现O(MlogMlogN)O(M\log M\log N)的复杂度。 也就是说,如果把一个状

2018-01-16 22:09:59 216

原创 [BZOJ4448][Scoi2015]情报传递(主席树)

看到询问,很容易想到可以使用树上主席树来解决。 但是修改如果直接做,则比较难实现,因为一个情报员搜集了情报之后,从第二天开始,这个情报员的危险值是持续增加的。但是,如果假设每个人的危险值每天都会加11,这样就比较容易实现了。 所以,考虑离线。即存下所有的操作之后,扫一遍所有的搜集情报操作。如果第ii个人在第jj天搜集了情报,那么第ii个人的初始危险值定为q−j+1q-j+1,否则第ii个人的初

2018-01-16 21:43:23 264

原创 [BZOJ4443][Scoi2015]小凸玩矩阵(二分答案+二分图匹配)

首先二分答案,转化为判定性问题: 是否存在一种选法,使得第KK大的数字≤mid\leq mid。 看到「其中任意两个数字不能在同一行或同一列」这一条件,想到二分图匹配。 而第KK大的数字≤mid\leq mid,等价于选出的NN个数中,至少存在N−K+1N-K+1个数小于等于midmid。 因此,对于任意一对1≤i≤N1\leq i\leq N且1≤j≤M1\leq j\leq M,如果矩

2018-01-15 21:44:50 226

原创 [BZOJ4540][Hnoi2016]序列(莫队/线段树)

解法一:莫队+RMQ看到“子序列的子序列”这样的问题,首先想到莫队,即离线排序之后不断移动指针。下面以[l,r−1][l,r−1][l,r-1]转移到[l,r][l,r][l,r]为例,分析转移的方法。 可以看出,[l,r][l,r][l,r]的结果比[l,r−1][l,r−1][l,r-1]的结果多了∑ri=lminrj=ia[j]∑i=lrminj=ira[j]\sum_{i=l}^r\...

2018-01-13 20:51:59 327

原创 [BZOJ3675][Apio2014]序列分割(斜率优化DP)

首先这道题有一个结论:确定了每次切割的位置之后,最终的得分与切割的顺序无关。 可以设确定了这kk个切割位置之后分成的k+1k+1个序列中的元素和分别为x1x_1,x2x_2,......,xk+1x_{k+1}。假设第一次切割的位置在第yy和第y+1y+1个元素之间(第hh个序列和第h+1h+1个序列之间),那么使用归纳法,假设[1,y][1,y]和[y+1,n][y+1,n]满足这个结论,那么

2018-01-13 10:17:38 299

原创 [BZOJ3572][Hnoi2014]世界树(虚树+树形DP)

以下将原图视为有根树,size[u]size[u]为原树中节点uu的子树大小,dep[u]dep[u]为原树中节点uu的深度。 看到关键点(临时议事处)的总数是3∗1053*10^5级别,因此可以每次建出一个虚树,然后在虚树上进行树形DP。 首先用一个DP,计算出对于所有虚树上的点uu,与uu最近的关键点。下面设f[u]f[u]为与uu距离最近的关键点,d[u]d[u]为uu与f[u]f[u]

2018-01-07 17:31:52 269

原创 [BZOJ4557][JLoi2016]侦察守卫(树形DP)

把原图视为有根树,以11为根。考虑到一个点uu,如果在点uu设置了守卫,那么从uu的子节点vv开始往下的D−1D-1层(vv为第11层开始)都会被保护,那么从vv开始往下的D−1D-1层,在某些条件下就不用设置守卫。所以建立一个DP模型:f[u][i]f[u][i]表示uu的子树内,至少前ii层已经被uu的子树外的守卫保护,然后保护uu的子树内所有应被保护的节点的最小代价。 但这样存在一个问题:

2018-01-07 12:28:30 296

原创 [BZOJ1933][Shoi2007]Bookcase 书柜的尺寸(DP)

看到层数只有33,可以推断DP模型的维数一定和33有关。 一个模型:f[i][j][k]f[i][j][k]表示到了第ii本书,第11行的厚度之和为jj,第22行的厚度之和为kk时的最小总高度。 但这样是有后效性的,因为每一层的高度是未知的。对此可以将书按照高度从大到小排序,这样如果某一层有书,那么之后无论在这本书的后面加多少本书,这一层的最大高度都是不变的。 所以转移方程为(下面h=∑ix

2018-01-07 11:03:25 226

原创 [BZOJ3238][Ahoi2013]差异(后缀数组)

网上的题解都是后缀自动机……这里讲一下后缀数组的做法。 求出后缀数组的heightheight数组之后,任意两个不相同的后缀的lcp,都是heightheight数组中一段区间的最小值。 在给出的式子中,len(Ti)+len(Tj)len(T_i)+len(T_j)以及系数22可以提到外面去。所以现在要求出的就是 ∑1≤ij≤nlcp(Ti,Tj)\sum_{1\leq i。 把求lcp

2018-01-06 22:08:10 270

原创 [BZOJ2253][2010 Beijing wc]纸箱堆叠(CDQ分治优化DP)

考虑一个朴素的DP方案: 先求出所有纸箱的最短边(以下第ii个纸箱的最短边记为xix_i),次短边(以下第ii个纸箱次短边记为yiy_i)和最长边(以下记为ziz_i),然后按照xix_i从小到大排序。 这样,就变成了一个求最长严格上升子序列的问题,即f[i]f[i]为到了第ii个纸箱,且必须选第ii个纸箱的最优解: f[i]=1+maxxjxi,yjyi,zjzif[j]f[i]=1+\m

2018-01-06 19:43:33 313

原创 [BZOJ1272][BeiJingWc2008]Gate Of Babylon(组合数+容斥)

首先考虑一个问题:求把mm拆分成nn个非负整数的方案数。 先把问题转化一下:把mm拆分成nn个非负整数,相当于把m+nm+n拆分成nn个正整数。 而把m+nm+n拆分成nn个正整数,相当于把一个长度为m+nm+n的线段切成nn段。由于有m+n−1m+n-1个位置可以切,要切n−1n-1下,所以把m+nm+n拆分成nn个整数,方案数为Cn−1m+n−1C_{m+n-1}^{n-1}。 回到题目

2018-01-06 18:10:33 286

原创 [BZOJ1093][ZJOI2007]最大半连通子图(Tarjan+拓扑排序+DP)

首先得到,一个强连通分量一定是半连通的。 把强连通分量缩点之后,可以得到一个拓扑图。下面,sze[u]sze[u]为新图中点uu所对应强连通分量的大小。 缩点之后,就很容易得出,一个半连通子图一定是拓扑图中的一条链,半连通子图的大小为这条链上所有点的szesze之和。 所以,现在就是要求这个拓扑图的最长链(szesze之和最大)。 考虑按照拓扑排序DP,f[u]f[u]表示以uu为终点的最

2018-01-06 17:28:57 499

原创 [BZOJ4008][HNOI2015]亚瑟王(概率DP)

如果能够求出每张卡牌在所有rr轮中被发动的概率g[]g[],那么答案显然为: ∑ni=1g[i]d[i]\sum_{i=1}^ng[i]d[i] 第一步推出,g[1]=1−(1−p[1])rg[1]=1-(1-p[1])^r。 再考虑第二张: 情况一:如果第11张牌没有发动过技能,那么第22张牌发动技能的概率为1−(1−p[2])r1-(1-p[2])^r。 情况二:如果第11张牌发动过

2018-01-05 21:25:21 266

原创 [BZOJ4033][HAOI2015]树上染色(思路+树形背包DP)

以下记sze[u]sze[u]为uu的子树大小,val(u,v)val(u,v)为边(u,v)(u,v)的权值。 看到20002000的数据范围,首先猜想到可能复杂度是O(n2)O(n^2)。 首先想到的DP方案是:f[u][i]f[u][i]为uu的子树内,将ii个点染成黑色,在子树内的最大收益。最后答案就是f[1][m]f[1][m]。 然而,不难推出这个DP方案存在后效性——转移时,只

2018-01-05 21:23:17 330

原创 [BZOJ4825][Hnoi2017]单旋(LCT+set)

手动模拟,可以发现:单旋最小值或最大值到根,实际上就是删掉了22条边又加上了22条边。 而对于维护深度,由于根节点不断变化,所以树中所有节点的深度也在不断地整体变化。因此考虑用一个LCT维护这棵树,这样查询一个节点的深度,就是查询一个点到根的距离。同时又能支持动态加边和删边。 所以,现在就剩下一个问题:如何确定新节点的位置。 以下,设xx为待插入的节点,vxv_x为节点xx的关键码(这里xx

2018-01-05 20:57:44 319

原创 [BZOJ1016][JSOI2008]最小生成树计数(Kruskal+计数)

先把边按权值排序。假设现在考虑到的是所有权值为ww的边,并且所有权值小于ww的合法边已经在最小生成树内。这样考虑一个贪心,把所有的权值为ww都加入最小生成树内,但这样会形成环。又由于要求边权和最小的生成树,所以要在所有边权为ww的边中,删掉尽可能少的边,使得当前的生成树没有环。这样等同于在当前的生成树内,删掉这些边后每对点之间的连通性不变。而一个mm个点的连通图,去掉尽可能少的边使图仍然连通,答案

2018-01-05 20:29:58 228

原创 [BZOJ3236][Ahoi2013]作业(莫队+树状数组)

此题的询问是一个位置和权值都有限制的二维区间,但是题目具备无修改和允许离线两个条件,可以用莫队算法解决。 一个想法是:用莫队维护位置,树状数组维护权值。 具体的说,用一个数组cntcnt,维护莫队当前到达的位置区间内每个值的出现次数,并用两个树状数组,一个维护cntcnt的前缀和,另一个维护对于所有的j∈[1,i]j\in[1,i],cnt[j]>0cnt[j]>0的个数。 莫队移动指针时,

2018-01-04 20:05:23 216

原创 [BZOJ3123][Sdoi2013]森林(主席树+启发式合并)

首先介绍下树上主席树: 在序列上的主席树,是对序列的每一个前缀都建立一个线段树版本。 而树上主席树,是对树上的每一个节点到根的路径都建立一个线段树版本。 而如果query(u)query(u)是查询节点uu到根的路径上的信息,则查询uu到vv的路径上的信息,就是: query(u)+query(v)−query(lca(u,v))−query(fa[lca(u,v)])query(u)+q

2018-01-01 19:44:03 305

原创 [BZOJ2229][Zjoi2011]最小割(最小割+分治)

一个朴素的想法是跑n2n^2次最大流,但是这样啃腚会TLE。现在介绍一种分治法: 1、任意选两个点作为源点和汇点,求出最小割,记最小割容量为ansans。 2、这个最小割把图分成了两个集合,源点属于其中一个集合,汇点属于另一个。 3、对于一对点u,vu,v,如果它们属于不同的集合,则用ansans更新u,vu,v之间的最小割。 4、对源点所属的集合和汇点所属的集合继续递归。 这样,就只需

2018-01-01 19:42:42 229

原创 [BZOJ2730][HNOI2012]矿场搭建(割点+分类讨论)

先用Tarjan求割点。 可以想到,如果图中没有割点,那么可以在任意一个位置设置救援出口,这样看上去能合法,但是如果坍塌的点正好是救援出口就不行了。 因此,要设置22个救援出口,方案数为C2nC_n^2。 如果有割点,则在每一个点双连通分量内分类讨论: 1、当前点双连通分量内只有一个割点:只需要设置11个救援出口,可以放在双连通分量内除割点外的任意节点上。这样,如果该双连通分量内的除救援出口

2018-01-01 19:41:58 290

原创 [BZOJ1834][ZJOI2010]网络扩容(最大流+费用流)

第一问即为模板最大流。 第二问在跑完最大流的残余网络上继续建图,对于没有满流的边,将其费用置为00。同时对于所有的边<u,v><u,v>,再建一条边<u,v><u,v>,容量为∞\infty,费用为边<u,v><u,v>的扩容费用。 同时,还需要建一个新的源点连向原图中的源点,容量为KK,费用为00。 这样,最小的扩容费用就是最小费用最大流。 代码:#include <cmath>#inc

2018-01-01 19:40:47 215

原创 [网络流24题]圆桌问题(最大流)

记aia_i为数列第i+1i+1个数与数列第ii个数之差。这时就能得出aa是一个长度为K−1K-1的数列并且每个数都是一个[1,M][1,M]之间的整数。 而只要给定了这个差分数列和原数列的第11个数,就能确定整个原数列。同时也可以得出,一个差分数列对应了max(N−∑K−1i=1ai,0)\max(N-\sum_{i=1}^{K-1}a_i,0)个原数列。 由于M(K−1)<NM(K-1)<N

2018-01-01 19:39:48 300

空空如也

空空如也

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

TA关注的人

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