自定义博客皮肤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.

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

原创 【BZOJ4004】装备购买(JLOI2015)-线性基+贪心

测试地址:装备购买 做法:本题需要用到线性基+贪心。 很容易看出,这题要求一个权值和最大的线性无关组,这次是真的原版线性基了,而不是异或线性基,所以为了保证精度,要开long double,而且写法也和异或线性基略有不同,详见代码。 以下是本人代码:#include <bits/stdc++.h>using namespace std;int n,m,p[510];...

2018-03-29 20:07:51 236

原创 【LuoguP4137】区间mex-主席树

测试地址:区间mex 做法:本题需要用到主席树。 看到本题是离线的,很多同学想到了很显然的莫队做法,或者一些奇奇怪怪的离线做法,但实际上在线做法是有的:主席树。 考虑转换条件,我们要求最小的在一个区间中没出现过的自然数,如果把原数列看做往一个空序列中一个一个插入元素,那实际上我们找的就是在某段时间内没有被插入过的最小的元素。考虑按照权值建线段树,对于每个线段树中的区间,我们存储这个区间中最久...

2018-03-28 17:56:10 900

原创 【BZOJ4568】幸运数字(SCOI2016)-树上倍增+异或线性基合并

测试地址:幸运数字 做法:本题需要用到树上倍增+异或线性基合并。 我们发现,每次询问都是求从一条路径上选一个子集,使得这个子集的异或和最大。如果只有一个询问,那敢开这题的大家肯定都会O(60n)O(60n)O(60n)的线性基+贪心做法,问题是有qqq个询问,暴力做显然会炸,所以需要找到优化的方法。 我们发现只要求出了对应向量空间的线性基,那么求最大异或和就是O(60)O(60)O(60)的...

2018-03-22 22:18:30 369

原创 【BZOJ2115】XOR(WC2011)-异或线性基+DFS树+贪心

测试地址:XOR 做法:本题需要用到异或线性基+DFS树+贪心。 这题有很多神奇的结论,本蒟蒻只会感性证明,严谨证明就请各位大佬自己脑补了…… 首先我们有一个结论: 结论1:任何一条从111到NNN路径的异或和,都可以表示成任何一条从111到NNN的路径和几个与该路径在同一连通块中的环的异或和。 感性证明一下,因为是异或和,所以一条边走两次就相当于抵消掉了,那么一条路径最后肯定会抵消成一...

2018-03-22 20:19:46 183

原创 【HDU3949】XOR-异或线性基

测试地址:XOR 题目大意:给定nnn个正整数,它的每个子集(除空集外)都有一个异或和,求这些异或和中严格第kkk小的值。 做法:本题需要用到异或线性基。 首先我们求出线性基,然后每种异或和对于这个线性基都有唯一的组合方式,而根据线性基的性质,它们的最高位肯定各不相同,并且没有任何一个数包含其他数的最高位,所以我们对kkk进行二进制拆分,然后从小到大把对应位的线性基异或起来就是答案了。 傻...

2018-03-22 12:42:56 266

原创 【BZOJ3105】新Nim游戏(CQOI2013)-博弈论+异或线性基+贪心

测试地址:新Nim游戏 做法:本题需要用到博弈论+异或线性基+贪心。 首先根据博弈论的基本知识,标准的Nim游戏中,只要所有火柴堆内的火柴数目的异或值为000,那么先手必败,否则先手必胜。而这个新的游戏在经过前两轮后就是一个由我们先手的标准Nim游戏,那么后手为了胜利,必然会留下若干堆火柴,使得它们的异或值为000,而我们为了胜利,就不能提供后手这个机会,那么我们就要使得我们选完后,留下的火柴...

2018-03-21 20:41:19 295

原创 【BZOJ2460】元素(BJOI2011)-异或线性基+贪心

测试地址:元素 做法:本题需要用到异或线性基+贪心。 有关异或线性基的知识可以看这里。 根据题目的意思,我们需要找到一个矿石的子集,使得不存在任何一个子集使得子集内矿石的编号异或和为000,也就是说,要选出一个关于异或运算的线性无关组。而在求线性基的时候,我们实际上也求出了一组线性无关组。根据求线性基算法的相关性质,我们把数字放进去的先后顺序并不影响求出的线性基本身,而先放进去肯定最有可能成...

2018-03-21 20:15:53 291

原创 【BZOJ3534】重建(SDOI2014)-矩阵树定理

测试地址:重建 做法:本题需要用到矩阵树定理。 这两天去学(背)了矩阵树定理,主要就是将度数矩阵DDD减去邻接矩阵AAA得到基尔霍夫矩阵,然后将矩阵最后一行和最后一列去掉,剩下的部分求个行列式值,那么这个行列式的值就是这个图的生成树个数。根据行列式的性质,将一行乘上同一个数加到另一行上,所得到的行列式值不变,所以我们可以用类似高斯消元的方法把行列式消成上三角行列式。而上三角行列式的值等于其主对...

2018-03-20 20:33:24 280

原创 【BZOJ1227】虔诚的墓主人(SDOI2009)-线段树+离散化+组合数

测试地址:虔诚的墓主人 做法:本题需要用到线段树+离散化+组合数。 首先我们可以先将常青树的横纵坐标离散化,可是能成为十字架中心的墓地数量还是可能有W2W2W^2个,这要怎么办呢? 我们可以从下到上对于每一行,维护十字架中心在这一行的一段连续的墓地中的贡献。注意到我们要求的是: ∑Ckup×Ckdown×Ckleft×Ckright∑Cupk×Cdownk×Cleftk×Crightk\s...

2018-03-19 22:28:14 238

原创 【BZOJ2815】灾难(ZJOI2012)-拓扑排序+建树+LCA

测试地址:灾难 做法:本题需要用到拓扑排序+建树+LCA。 首先看到要处理DAG上的问题,自然而然地想到用拓扑排序处理出图的层次(这里的图是指从被吃的生物指向吃的生物的图)。我们发现题目要求的是,将某一个点删去后,有多少个点因此不能从最高层(即图中入度为0的点)走到,这个问题非常难考虑,如果我们能找到一个点,使得这个点被切断相当于这个点的所有食物全部灭绝,那么这样连起来就是一棵树,就可以通过求...

2018-03-19 20:52:11 294

原创 【BZOJ2209】括号序列(JSOI2011)-Splay

测试地址:括号序列 做法:本题需要用到Splay。 对于任意一个括号序列,我们把配对的括号删掉之后,最后肯定是xxx个右括号紧接着yyy个左括号的形式,那么怎么样才能用最少的次数改正呢?首先显然x+yx+yx+y是偶数,如果xxx和yyy都是偶数,那么最少次数显然为x/2+y/2x/2+y/2x/2+y/2;如果xxx和yyy都是奇数,那么最少次数为x/2+y/2+2x/2+y/2+2x/2+...

2018-03-17 16:33:41 269

原创 【BZOJ3991】寻宝游戏(SDOI2015)-贪心+DFS序+set

测试地址:寻宝游戏 做法:本题需要用到DFS+set。 首先需要看出,无论从哪个点出发结果都相同。然后就是要找一种能得到最优解的走法,显然走每条边222次是最优的,那怎么样构造出走法呢?其实只要按照这些点的DFS序顺序走下去,最后走回第一个点即可。因为对于涉及到的每条边,只下去一次再上来一次,所以这个肯定最优。那么我们每次插入或删除一个点时,实际上只影响到它在DFS序中相邻的两个点之间的贡献,...

2018-03-16 20:49:07 257

原创 【BZOJ2938】病毒(POI2000)-AC自动机+DFS判环

测试地址:病毒 题目大意:给定若干个01串,问存不存在一个无限长的串,使得这个串不包含任意一个给出的01串。 做法:本题需要用到AC自动机+DFS判环。 因为题目中涉及到了多串匹配的问题,所以自然想到构建AC自动机。接下来,我们知道匹配的过程实际上就是在AC自动机的节点上跳来跳去,于是我们预处理出从每个点开始走0或者走1能走到哪个点,这样就建出来了一个状态转移图。而有些点是不能走到的:每个串...

2018-03-16 19:18:09 219

原创 【BZOJ2434】阿狸的打字机(NOI2011)-AC自动机+树状数组

测试地址:阿狸的打字机 做法:本题需要用到AC自动机+树状数组。 因为题目是一个多模式串的匹配问题,所以很快想到对所有输出的字符串建AC自动机。 根据AC自动机的性质,如果一个点能够通过failfailfail指针走到另一个点,表示这个点代表的字符串的一个后缀等于走到的点代表的字符串。那么我们要知道串YYY中有多少串XXX,就是求在从根到代表串YYY的点的路径上,有多少个点能通过failfa...

2018-03-15 22:14:04 243

原创 【BZOJ3675】序列分割(APIO2014)-DP斜率优化

测试地址:序列分割 做法:本题需要用到DP斜率优化。 本题首先要注意到一个性质:只要选定了切割位置,无论按什么顺序切结果都相同。 令a,b,ca,b,ca,b,c为切割后的三段区间的和,先切ababab间和先切bcbcbc间的答案如下: a(b+c)+bc=ab+ac+bca(b+c)+bc=ab+ac+bca(b+c)+bc=ab+ac+bc c(a+b)+ab=ab+ac+bcc(a...

2018-03-14 22:39:57 286

原创 【LuoguP4275】萃香的请柬-数学证明

测试地址:萃香的请柬 做法:本题需要用到找规律(划掉)数学证明。 首先我们要猜(划掉)观察出两个结论: 第一:若第一个字符串为L,第二个字符串为B,则以后任意字符串都是前一个字符串后面接上前一个字符串的前一个字符串,如第三个字符串为B+L=BL,第四个为BL+B=BLB。 第二:无限长时间后,序列和初始状态无关。 第一个结论的证明,我们用数学归纳法,对于前三个字符串显然满足这个结论,而对...

2018-03-14 20:48:24 216

原创 【BZOJ3307】雨天的尾巴-线段树合并+树上差分

测试地址:雨天的尾巴 题目大意:一棵树,对其执行若干次操作,每次选定一条路径和一种型号的货物,然后给这条路径上所有的点派发一份选定型号的货物,最后求每个点获得的最多的货物的型号。 做法:本题需要用到线段树合并+树上差分。 首先,对一条路径派发货物,我们可以用树上差分的思想,将其转化为向路径的两个端点派发一份货物,然后向LCA和LCA的父亲派发负一份货物,那么每个点的货物相当于其子树中所有货物...

2018-03-13 19:58:20 303

原创 【CF893F】Subtree Minimum Query-主席树

测试地址:Subtree Minimum Query 题目大意:给定一棵有根树,每个节点有一个权值,现在有若干个询问,每个询问给出x,kx,kx,k,表示询问以xxx为根的子树中,与xxx的距离不超过kkk的点中最小的权值。强制在线。 做法:本题需要用到主席树。 首先询问子树我们肯定想到将点按DFS序排序,然后每个询问就是要求点在DFS序中编号在[l,r][l,r][l,r],深度在[dep...

2018-03-12 22:17:06 391

原创 【BZOJ2212】Tree Rotations(POI2011)-平衡树启发式合并

测试地址:Tree Rotations 做法:本题需要用到平衡树启发式合并。 对于叶子节点,最优答案显然是000。然后对于每棵子树,我们发现由转换它的左右子树所多出的逆序对数,仅和两边都有什么数字有关,而不和两边的数字顺序有关,所以我们对于每个叶子节点存储一棵平衡树,然后在每个节点合并左右子树的平衡树,在合并的同时,算出新增的逆序对数,然后判断要不要转换子树,选择最小的答案累加即可。 以下是...

2018-03-11 21:13:21 283

原创 【BZOJ2733】永无乡(HNOI2012)-平衡树启发式合并

测试地址:永无乡 做法:本题需要用到平衡树启发式合并。 题目要维护每个连通块的第kkk大,并且要支持合并。维护第kkk大我们知道可以用平衡树解决,但是平衡树的合并我们好像除了暴力就没有想法了。怎么样比较快地合并两棵平衡树?想法上非常简单,我们只需要暴力把点数比较小的那棵平衡树上的点一一插入到另一棵平衡树上。为什么这样就更优了呢?因为每次合并,新平衡树的大小必然是原小平衡树的两倍以上,那么每个元...

2018-03-11 18:15:37 321

原创 【BZOJ3160】万径人踪灭-FFT+Manacher

测试地址:万径人踪灭 做法:本题需要用到FFT+Manacher。 这道题要求不连续的回文子序列数量,显然这个数量等于所有回文子序列数量减去连续的回文子序列数量,后面的部分很显然可以用Manacher算法求出,那么现在的问题就是要求出所有回文子序列数量。 对于每条对称轴,都存在一个数kkk,使得任意满足i+j=ki+j=ki+j=k的数对i,ji,ji,j,有ai+ajai+aja_i+a_...

2018-03-09 21:23:38 230

原创 【BZOJ4199】品酒大会(NOI2015)-后缀数组+并查集

测试地址:品酒大会 做法:本题需要用到后缀数组+并查集。 不难想到,对题目所给的字符串构造后缀数组,那么后缀数组上两个后缀之间最小的heightheightheight就是这两杯酒满足的最大相似度。我们要求的,实际上是对于每个相似值kkk,对于后缀数组上heightheightheight大于等于kkk的边连接成的每个连续区间求出方案数和最大乘积,然后对方案数累加,对最大乘积取最大值。不难看出...

2018-03-08 21:28:28 298

原创 【BZOJ3572】世界树(HNOI2014)-虚树+树形DP

测试地址:世界树 做法:本题需要用到虚树+树形DP。 首先一看这道题我们就知道要用虚树,因此我们先把询问点的虚树先建出来,然后考虑DP。 我们把虚树中每个点受哪个点管辖先求出来,这是通过两次DFS来完成的,一次处理向下方向的最近,一次处理向上方向的最近。然后对于每条虚树上的边,如果边的两端所属的点不同,则表示这条边需要切断,那么我们可以倍增求出断点,在每次切断时求出较下面的那一块的大小即可。...

2018-03-07 21:45:24 287

原创 【BZOJ2286】消耗战(SDOI2011)-虚树+树形DP

测试地址:消耗战 做法:本题需要用到虚树+树形DP。 这题如果只有一个询问,相信大家都会做了,比较裸的树形DP。但是询问次数很大,每次询问都O(n)O(n)O(n)DP的话,总的时间复杂度就是O(nm)O(nm)O(nm),无法承受。但是我们发现,总共涉及的询问点数不大,那么我们迫切需要一个关于kkk而不是关于nnn的算法。这时候就要拿出大杀器——虚树了。 虚树其实应该不算是一种数据结构,它...

2018-03-07 11:27:35 273

原创 【POJ3044】City Skyline-单调栈

测试地址:City Skyline 题目大意:给定一个直方图轮廓,问最少需要多少个矩形能够拼出这个轮廓(矩形可以相交)? 做法:本题需要用到单调栈。 对每个点求出以该点为最小值的最大区间,我们发现题目要求的就是除了元素0外,有多少本质不同的区间。 我们把高度逐一入栈,当一个元素出栈时(并且不是因为一个和它相等的元素出栈,而且这个元素不是0),就代表出现了一个新的本质不同的区间,对这样的出栈...

2018-03-02 18:48:13 495

原创 【POJ2796】Feel Good-单调栈

测试地址:Feel Good 题目大意:给定一个元素均为非负整数的序列AAA,求一个区间[l,r][l,r][l,r]使得min(Ai(l≤i≤r))×∑ri=lAimin(Ai(l≤i≤r))×∑i=lrAi\min(A_i(l\le i\le r))\times \sum_{i=l}^rA_i最大。 做法:本题需要用到单调栈。 题目要求的式子里面有个最小值,这就比较明显地把方向向单调栈引...

2018-03-02 17:51:30 354

原创 【BZOJ3744】Gty的妹子序列-序列分块+树状数组

测试地址:Gty的妹子序列 做法:本题需要用到序列分块+树状数组。 求区间逆序对数,我们知道可以用莫队算法+树状数组来做离线做法,但是这题强制在线,我们应该怎么办呢? 还是考虑分块,将序列分成n−−√n\sqrt n块,每块有n−−√n\sqrt n个元素。我们需要尽可能快的处理出尽可能多的区间内的逆序对数,这样可以有助于我们进行下一步操作。令num(l,r)num(l,r)num(l,r)...

2018-03-02 12:53:39 547

原创 【BZOJ2752】高速公路(HAOI2012)-线段树

测试地址:高速公路 做法:本题需要用到线段树。 归纳一下,本题要维护的信息是: ∑ri=l(i−l+1)(r−i)(r−l+1)(r−l)/2Vi∑i=lr(i−l+1)(r−i)(r−l+1)(r−l)/2Vi\sum_{i=l}^r \frac{(i-l+1)(r-i)}{(r-l+1)(r-l)/2}V_i 把1(r−l+1)(r−l)/21(r−l+1)(r−l)/2\frac{1...

2018-03-02 10:20:36 257

原创 【BZOJ2333】棘手的操作(SCOI2011)-线段树+并查集+离线处理

测试地址:棘手的操作 做法:本题需要用到线段树+并查集+离线处理。 话说这题号还真喜庆……又据说这题原来是毒瘤数据结构,什么堆套左偏树之类……但是本蒟蒻从某大佬那里得到了离线做法的启示,所以就水了一发。 我们尝试构造一种点的排列方案,使得操作中涉及的所有连通块在排列中都是一个连续区间。这可以构造出来吗?当然可以!首先我们把每个点都看作一个区间,每当合并两个连通块,就是将两个区间放在一起,这个...

2018-03-01 23:42:49 241

空空如也

空空如也

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

TA关注的人

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