![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
bzoj
Todobe
two funny foolish men
展开
-
期望【bzoj3450】Tyvj1952 Easy
题目大意: 给你一个串里面有’o’,’x’,’?’三种字符,’?’代表有一般的概率是‘o’,有一般的概率是‘x’。 如果有极大的连续a个‘o’,就会得到a*a的分数。 询问期望得分。题目分析: 我们设f[i]为以第i位为结尾的最长的o串的期望长度,g[i]为到第i个位置的期望得分。我们可以容易的得到f[i]的递推式: 当前位置为‘o’时: f[i]=f[i-1]+1 当前位置为‘x’时:原创 2017-01-16 15:33:08 · 307 阅读 · 0 评论 -
bzoj3648 寝室管理 树分治
题目大意: 给一颗基环树,求所有长度大于等于K的路径。题目分析: 如果没有环,只有树的话,只要裸上树分治就可以了。 有环的话我们就先把环上的一条边去掉,然后做树分治。 这样我们就统计出了所有不经过这条边的路径树,还剩下所有经过这条边的路径数。 我们此时处理出以环上所有点位根的子树信息,并将其合并。 然后每次去掉环上一个点的信息,再用这个点的子树信息与环上其他点的子树信息更新答案(通过刚才原创 2017-06-05 20:20:57 · 402 阅读 · 0 评论 -
bzoj4448 [Scoi2015]情报传递 树链剖分+树状数组
题目大意: 维护一颗树,支持一下操作(可以离线) 1、给一个点赋值; 2、查询一条链上比有多少个点以及某个数(i-c)小的点有多少个。(我这个题目大意略精简了一点哈=。=,但是还是可以比较轻松的把原题目转化成这个意思的)题目分析: 我们可以把所有的操作离线出来,把赋值操作按照赋值的大小排序(相当于没排,不知道我这个沙茶为毛要排一下>_<) 然后把所有的询问按照要(i-c)从小到大排序。原创 2017-06-16 16:08:18 · 728 阅读 · 0 评论 -
bzoj3083 遥远的国度 树链剖分+线段树
题目大意: 维护一棵树,支持三个操作: 1、换根; 2、链修改; 3、查询子树最小值。题目分析: 如果只有2、3操作就可以直接树链剖分+线段树裸上了。 加上1操作后,我们仍然可以树链剖分+线段树裸上。对于查询操作,我们分三种情况讨论: 假设查询的点为x。 1、根和x相同:直接输出整棵树的最小值。 2、根不在x的子树中:直接查询原x的子树。 3、根在x的子树中:先找到根在x的哪个子原创 2017-06-16 11:34:47 · 390 阅读 · 0 评论 -
bzoj2725 [Violet 6] 故乡的梦 && 4400 tjoi2012 桥 Dijkstra+线段树
题目大意: 2725: 有n个点,m条边的图,有边权,给定S(起始点)和T(终点),然后有q个询问,问原删除某一条边后的S到T的最短路。 4400:有n个点,m条边的图,有边权,问删除哪些边能使从1号节点到n的最短路径最长。题目分析: 2725: 我们先随便找出一条最短路,如果删除的边不在最短路上,很显然走最短路是最近的,直接输出最短路长度即可。 当询问的边是最短路上的边的时候: 如果我原创 2017-06-15 21:49:32 · 879 阅读 · 0 评论 -
bzoj1177 [Apio2009] Oil 分类讨论
题目大意: 给定n*m的矩阵,求三个互不相交的边长为k的子正方形的最大权值和。题目分析: 因为这写矩形互不相交,所以我们可以把他们所在的区域划分成块。 YY一下,情况也就6种:(出题人真是良(sang)心(bing)啊) 1:先横着切一下,再把上面竖着切一下 2:先横着切一下,再把下面竖着切一下 3:先横着切一下,再把下面横着切一下 4:先竖着切一下,再把左面横着切一下 5:先竖着切原创 2017-04-27 21:39:29 · 426 阅读 · 0 评论 -
bzoj2806 【Ctsc2012】 Cheat 后缀自动机+单调队列优化dp
题目大意: 给定一些标准串。 给定一个串,要求一个L使得在这个序列中可以取出若干个长度超过L的子串(这些子串必须是给定标准串的子串),且取出的串的总长度超过整个串的90%。 求最大的L。题目分析:先用后缀自动机求出以每个位置为结尾往前最多能匹配多少位,我们用数组a[i]来存储这个值。 这个只要对于所有的标准串建一个广义的后缀自动机,然后把这个串放进去跑一遍,如果能匹配的话,这一位就比上一位多原创 2017-05-27 17:54:38 · 437 阅读 · 0 评论 -
bzoj 1150 [CTSC2007]数据备份Backup 贪心+优先队列
题目大意: 直线上有n个点,选择2k个互不相同的点,使他们两两配对,求所有点对的最小距离和。题目分析: (先扯一波淡) 一开始觉得n*n *k的dp可做,恩(点头) 然后看了一眼数据范围…… 这个dp可优化到n*k,恩(点头) 然后再看一眼数据范围…… 换个做法,网络流也能跑,恩(点头) 然后建完图跑一下…… 行了我AFO了很显然我们选择的每一对点必须相邻,否则相邻的点对一定比不相原创 2017-04-26 15:58:04 · 460 阅读 · 0 评论 -
半平面交 模板 bzoj2618 【Cqoi2006】凸多边形
题目大意: 给两个凸多边形,求面积交。题目分析: 求半平面交。代码如下:#include <cstdio>#include <algorithm>#include <cmath>using namespace std;struct point{ double x,y; point(){} point(double x,double y):x(x),y(y){}原创 2017-05-25 20:32:16 · 428 阅读 · 0 评论 -
【bzoj3589】动态树 树链剖分+线段树
题目大意: 给定一棵树,支持以下两个操作: 0、子树修改 1、查询几条的链并的权值和,答案模2^31。 (这些链为某个节点到根的路径的一部分)题目分析:(树链剖分+线段树) 首先,这道题跟动态树没什么关系。 其他的题解有用什么容斥原理,还有奇怪的动态树做的,我觉得树链剖分+线段树就足够了。我们假设不是求这些链的并,而是求这些链的权值和。 那么只需要树链剖分之后维护线段树就原创 2017-04-06 20:00:46 · 429 阅读 · 0 评论 -
线性基 模板 bzoj2460 【BeiJing2011】 元素
题目大意: 有许多矿石,矿石有编号和价值两种属性,我们要求一个集合,使得该集合任意子集编号异或和不为0,并且要求价值和尽量大。题目分析: 先科普线性基。 线性基是我们构造出一个集合,这个集合中的所有元素能相互异或能得到原集合中任意子集异抑或和。 当然我们构造出的线性基是具有一些优秀性质的。 线性基中的元素只有二进制位数个。 其中第i个元素ins[i]代表用所有数能异或出的最高位为第i位的原创 2017-05-01 18:56:31 · 938 阅读 · 2 评论 -
BZOJ 3677【Apio2014】连珠线 树形dp
题目描述: 在列奥纳多·达·芬奇时期,有一个流行的童年游戏,叫做“连珠线”。不出所料,玩这个游戏只需要珠子和线,珠子从1到礼编号,线分为红色和蓝色。游戏 开始时,只有1个珠子,而接下来新的珠子只能通过线由以下两种方式被加入: 1.Append(w,杪):-个新的珠子w和一个已有的珠子杪连接,连接使用红线。 2.Insert(w,u,v):-个新的珠子w加入到一对通过红线连接的珠子(u,杪)原创 2017-05-01 16:17:00 · 812 阅读 · 0 评论 -
splay 新模板 【bzoj3223】 文艺平衡树
上次写splay拿noi2015维修数列来练手,当时觉得自己写得还挺好的,但是后来发现那个模板居然不能拿来写LCT(其实应该也可以写的,但是我是蒟蒻,我不会)。所以又发愤图强,去各大神犇博客中学习,终于写出了新的模板。与之前的不同: 1、设虚节点,可以降低崩溃的几率; 2、旋转和splay等函数不需要打引用; 3、splaying用循环的方式,代替原来递归的方式,省空间。注意事项: 1、在写原创 2016-12-26 10:02:13 · 628 阅读 · 0 评论 -
后缀自动机+LCT 【bzoj4545】 DQS的Trie
题目大意: 维护一个树,树的边上有一个字母,支持三个操作: 1、查询本质不同的子串的个数; 2、在树上的某一个节点长出一个新的子树; 3、查询某个串出现的次数。题目分析: 对这棵树维护一个广义的后缀自动机。 对于1操作,只要维护每个节点的max_ len减去parent树上父节点的max_len,详见bzoj4516生成魔咒的题解; 对于3操作,则维护LCT进行链加即可,详见bzoj2原创 2017-04-19 14:19:27 · 513 阅读 · 0 评论 -
后缀自动机 + LCT 【bzoj2555】SubString
题目大意: 支持两个操作: 1、插入一串字符 2、查询一串字符在串中出现多少次。 强制在线题目分析: 维护一个动态的字符串,后缀自动机可以做。 要查询一串字符在串中出现的次数,就相当于查询这个串末尾字符代表的状态的right集合的大小,但是我们在维护后缀自动机的时候没办法维护right集合呀! 但是我们可以发现,一个节点的right集合等于在parent树上所有儿子节点的和。 所以只原创 2017-04-12 21:35:23 · 495 阅读 · 0 评论 -
回文自动机 模板 bzoj3676【Apio2014】回文串
题目描述: 考虑一个只包含小写拉丁字母的字符串s。 我们定义s的一个子串t的“出 现值”为t在s中的出现次数乘以t的长度。请你求出s的所有回文子串中的最大出现值。题目分析:(回文自动机) 问:原创 2017-04-12 19:13:44 · 429 阅读 · 0 评论 -
虚树+树形dp bzoj2286【Sdoi2011】 消耗战
题目大意: 给定一棵根节点为1的带边权的树。 每次给定一些点,求把这些点与树根断开的最小花费。题目分析: 我们可以O(n)处理出每个点与根断开的最小花费,即该节点到根的路径上的最小边权。 然后我们对于每一个询问,可以把询问的点打上标记,然后可以O(n)动态规划求解。 但是O(n)的时间复杂度接受不了,而且我们发现每次询问并不会询问所有的点,而且询问的总点数不超过50w。 这样我们可以每次原创 2017-03-17 08:48:53 · 409 阅读 · 0 评论 -
bzoj4424 Cf19E Fairy 树形dp
题目描述: 给定 n 个点,m 条边的无向图,可以从图中删除一条边,问删除哪些边可以使图变成 一个二分图。 n,m<=1000000题目分析: 戳这里详细题解一个二分图是没有奇环的。 要让所有的奇环消失,就应该删去所有奇环的交上的边。 但是如果删去奇环和偶环的交上的边,奇环和偶环就会重新组成一个新的奇环,所以在偶环上的边是不能删的。这样我们随便搞出一颗生成树,对于对于所有树边,在所有奇环原创 2017-06-28 19:24:31 · 724 阅读 · 0 评论 -
bzoj2744 [HEOI2012]朋友圈 二分图大匹配——最大独立集
题目描述: 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着。一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最大数目。 两个国家看成是AB两国,现在是两个国家的描述:A国:每个人都有一个友善值,当两个A国人的友善值a、b,如果a xor b mod 2=1, 那么这两个人都是朋友,否则不是;B国:每个人都有一个友原创 2017-06-19 22:48:43 · 907 阅读 · 0 评论 -
bzoj1137 [POI2009]Wsp 岛屿 半平面交
题目大意: 有一个n个点的凸多边形,任意两个点之间有一条笔直的路径,可以在路径相交的时候换路。 现在有m条路不能走了,问从点1走到点n的最短路是多少。题目分析: 这道题其实是让求一个剩余路的半平面交的周长(这到底是怎么想到的orz)。 但是路有n^2条,但是对于一个点,最前面的一条边可以把后面的所有边都弹掉,所以后面那些边都没有用了,只加最前面的一条边就可以了,于是就变成边数就变成了n。把n原创 2017-07-08 10:44:36 · 469 阅读 · 0 评论 -
bzoj3211 花神游历各国 线段树
题目大意: 维护一个长度为n的序列,支持一下两个操作: 1、区间开根号(向下取整); 2、区间求和。 n<=100000,m<=200000,序列中的数<=10^9且为非负整数。题目分析: 都这个逼样了还来刷水,我是心大还是脑子进屎呢T_T区间开根号这个没有什么数据结构维护的了,但是10^9这么大的数开根号5次也就到1了。 所以说线段树维护一下区间和,然后修改就暴力在线段树上改就可以了,原创 2017-07-20 19:11:59 · 577 阅读 · 0 评论 -
bzoj4241 历史研究 回滚莫队
题目大意: 有一个长度为n的序列。 有m个询问,每次询问l~r范围内每个数值乘以该数值出现次数的最大值。题目分析: 据说这题可以在线做?这题普通的莫队GG,因为不支持快速删除操作,但是支持快速加入一个值的操作,所以上回滚莫队就好了。回滚莫队可以把删除操作去掉,并且时间复杂度仍然保持在在O(nsqrtn)。分块和排序都按照正常莫队做法来,然后在统计答案的时候,如果一个询问的左端点和右端点在同一个原创 2017-07-06 15:27:30 · 776 阅读 · 0 评论 -
0/1分数规划 【POJ2976】Dropping tests
题目大意: 给定两个长度为n的数组a,b.从中选出n-k个数使得sigema ai /sigema bi 最大。题目分析:(0/1分数规划) 0/1分数规划传送门 一道裸题。 二分答案,算出d数组,从大往小取n-m个,判断F[L]。代码如下(传送门对面貌似是Pasical选手=。=,c++版本如下供参考):#include <cstdio>#include <algorithm>#inc原创 2017-03-10 08:31:21 · 364 阅读 · 0 评论 -
bzoj4519 [Cqoi2016]不同的最小割 分治最小割 模板
题目大意: 给一张图,求任意两点最小割有多少不同的值。题目分析: 分治最小割的模板题。 分治最小割可以在O(n次网络流+n^2)的时间复杂度求出任意两个点之间的最小割。 我也不知道为什么但是这么做是对的QWQ。对于分治的序列,随便选择两个点作为源点和汇点,跑一遍网络流。 在S和T之间连一条流量为最小割的边。 然后和S连通的点分到左边,剩余的点分到右边,递归下去。 这样做我们会做n-1次原创 2017-06-27 18:00:21 · 411 阅读 · 0 评论 -
bzoj2906 颜色 分块
题目大意: 给一个长度为n的颜色序列,颜色不超过m种,询问位置在l~r中间,颜色在a~b之间的同种颜色出现次数的平方的和。题目分析: 神分块orz 每n^(2/3)个数分成一个块,然后预处理出第i个块到第j个块的前k种颜色的答案是多少,和第i块到第j块第k种颜色有多少个。然后对于l~r相同块就暴力一下,否则整块直接读答案,边边角角就暴力更新一下。代码如下:#include <cstdio>#原创 2017-07-13 20:46:16 · 685 阅读 · 0 评论 -
bzoj4199 [Noi2015]品酒大会 后缀数组+并查集
题目大意: 定义字符串s的两个子串为r相似的当起始位置不同的两个长度为r子串完全相同。 第一问: 对于每一个r,求出r相似的子串有多少对,0<=r#include <cstdio>#include <algorithm>#include <iostream>#define N 320000using namespace std;typedef long long LL;const L原创 2017-07-04 17:04:52 · 397 阅读 · 0 评论 -
bzoj3159 决战 LCT
题目大意: 维护一个树,支持以下操作: 1、链+ 2、链求和 3、链求最大 4、链求最小 5、链翻转(此处的翻转是指把链上的值翻转,而树的形态不变)题目分析:(LCT) 如果只有前四个操作就可以用LCT或者树链剖分+线段树随便维护一下就行了。 有了第五个操作就不行了。所以我们用两个LCT,一个维护这棵树的形态,另一个维护树上所有的权值。 两个LCT的链的剖分是一样的,但是splay原创 2017-06-12 16:20:47 · 578 阅读 · 0 评论 -
bzoj3601 一个人的数论 莫比乌斯反演+高斯消元
题目大意: 设fd(n)代表n以内与n互质的数的d次幂的和。 给出n和d,求fd(n)。题目分析: 围观题解. 数论渣渣表示orz……代码如下:#include <cstdio>#include <algorithm>#include <iostream>#define N 120using namespace std;typedef long long LL;const int原创 2017-06-23 16:26:04 · 481 阅读 · 0 评论 -
bzoj2877 [Noi2012]魔幻棋盘 二维线段树
题目大意: 维护一个矩阵支持两个操作: 0、查询子矩形gcd。 1、子矩形整体加一个值。 所有的询问都会一定包含同一个点。题目分析: PoPoQQQ讲解的非常好啊这个…… 二维线段树可以资磁子矩形查询,但是它不资磁子矩形修改啊orz 由于gcd(a,b)=gcd(a-b,b),所以我们可以考虑差分。 但是上面这个式子使用是有前提的,就是把一些数差分之后,其中必须有一个数时原数才行,恰原创 2017-07-02 20:17:37 · 631 阅读 · 0 评论 -
bzoj1061 [Noi2008]志愿者招募 单纯形(模板)
题目大意: 有n天,m种志愿者。 每天需要ai个志愿者,雇佣每种志愿者的费用为ci,每个志愿者可以在Si天到Ti天工作。 问最小花费。题目分析: 题解PoPoQQQ.html 单纯形wyfcyx.pdf据说这道题网络流神题,单纯形裸题首先我们根据题意 设第i天需要xi个志愿者。 Ai,jA{_i,_j}代表第j个人可以在第i天工作。 bib{_i}代表第i天需要的人数。 cic{_原创 2017-06-21 21:27:47 · 497 阅读 · 0 评论 -
UOJ#77 bzoj3218 a + b Problem 可持久化线段树优化建图+网络流
题目大意: 有n个点,如果第i点染黑得到bi的收益,染白得wi的收益。 每个点有属性ai,li,ri,pi。 如果第i个点染成黑色,并且存在一个点j满足 第j个点染白色,j< i 且 li<=aj<=ri 则i为奇怪的点,付出pi的代价。 求总收益最大。 n<=1e5题目分析: 可以看出一个网络流的模型。 从源点向每个点连bi,每个点向汇点连wi。 对于第i个点,新建一个结点,从原创 2017-06-30 17:29:32 · 722 阅读 · 0 评论 -
bzoj2428 [HAOI2006]均分数据 模拟退火
题目大意: 把n个数分成m组,要求分的尽量平均,即方差最小,求这个方差。题目分析: http://blog.csdn.net/lych_cys/article/details/50843232 我们先随机一个答案,设置一个温度,然后把其中一个数从原来的分组中拿出来,随机放到另一个分组中,并计算答案,如果答案更优,就接受,否则就以一定概率(温度越高概率越大)接受这个答案,并且慢慢降温。因为模拟退原创 2017-06-21 16:31:49 · 464 阅读 · 0 评论 -
bzoj1797 [Ahoi2009]Mincut 最小割 网络流+强连通分量
题目大意: 给一张图,S和T。 对于每一条边,问这条边是否可以在最小割中,是否一定在最小割中。题目分析: http://hzwer.com/3217.html 先跑一边网络流,然后在残量网络中进行强连通分量缩点。对于第一问,如果u和v不在一个强连通分量中,则这条边可以在最小割中。 对于第二问,如果u和S在一个强连通分量中,并且v和T在一个强连通分量中,在这条边必须在最小割中。代码如下:#i原创 2017-06-21 15:10:15 · 531 阅读 · 0 评论 -
bzoj1391 [Ceoi2008]order 网络流——最大权闭合子图
题目描述: 有N个工作,M种机器,每种机器你可以租或者买过来. 每个工作包括若干道工序,每道工序需要某种机器来完成,你可以通过购买或租用机器来完成。 现在给出这些参数,求最大利润n<=1200,m<=1200。题目分析: 最大权闭合子图模型。 从源点向工作连容量为收益的边。 从机器向汇点连容量为购买的边。 从工作向机器连容量为租用的边。 用总收益减去最小割(即最大流)即可。这题不仅卡时,原创 2017-06-20 22:00:01 · 533 阅读 · 0 评论 -
bzoj3436 小K的农场 差分约束系统
题目大意: 给定n个点,m条信息,信息分为三种: 1、a比b多至少c 2、a比b多之多c 3、a和b相等题目分析: 差分约束系统。 差分约束系统中的一条边代表b至多比a多c。 于是我们用一下方式连边然后跑最短路即可: 1、a->b -c 2、b->a c 3,a->b 0第一次写递归版的spfa好羞射o(>﹏<)o 代码如下:#include <cstdio>#define原创 2017-06-15 21:58:06 · 382 阅读 · 0 评论 -
括号序列 || 动态树分治 bzoj1095【ZJOI2007】Hide 捉迷藏
题目大意: 给出一棵树,初始全是黑点,每次修改把黑点变成白点或把白点变成黑点,每次查询树中黑点最远距离。题目分析: 两种做法。 第一种:括号序列 这个做法真的比较神啊,无论是代码长度,时间,还是空间都完虐动态树分治。 上边的是动态树分治,下边的是括号序列。 做法大致是把树转化成一个括号序列,然后维护一个线段树。 对于这个神做法,我还是不多BB,大家一起膜岛娘吧 _ (:зゝ∠) _原创 2017-03-26 21:57:30 · 443 阅读 · 0 评论 -
CDQ分治维护凸包 优化dp 【NOI2007】货币兑换cash bzoj1492
题目描述: 小 Y 最近在一家金券交易所工作。该金券交易所只发行交易两种金券:A 纪 念券(以下简称 A 券)和 B 纪念券(以下简称 B 券)。每个持有金券的顾客都有 一个自己的帐户。金券的数目可以是一个实数。 每天随着市场的起伏波动,两种金券都有自己当时的价值,即每一单位金券 当天可以兑换的人民币数目。我们记录第 K 天中 A 券和 B 券的价值分别为 AK 和 B原创 2017-03-15 23:27:39 · 495 阅读 · 0 评论 -
后缀数组+单调栈 【Ahoi2013】bzoj3238 差异
题目大意: 题目分析: 这个公式的前两项可以提出来单算,这两项的总和应该是(n+1)n/2 (n+2)。 问题就转化成了求任意两个后缀的lcp之和。 我们知道两个后缀的lcp就是height数组取min,那么反过来想,一个位置能影响到的就是自己前面和后面且height值大于当前位置height值的连续的部分(按照个人理解就是以这个位置的lcp当作桥梁,算出一部分lcp的长度), 问题转化为了原创 2016-12-28 15:45:46 · 366 阅读 · 0 评论 -
可持久化线段树 模板 【bzoj3932】任务查询系统
人的运势就如同一条正弦曲线不断波动起伏。如果你觉的你一直在走下坡路,那只能说明,你还没有到达最低点。 ——Todobe题目大意: 给m个任务,第i个任务从si秒持续到ei秒,有权值pi。 有n次查询,询问第x秒前k小的权值和。 强制在线。题目分析: 如果可以离线的话只需要把修改和查询排个序正常权值线段树就好。 但是这是在线的,所以我们就让这个线段树……更持久(持久化)。我们原创 2017-01-04 17:10:01 · 503 阅读 · 0 评论 -
快速傅里叶变换 FFT 【bzoj2194】 快速傅立叶之二
题目大意: 请计算C[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,并且有 n < = 10 ^ 5。 a,b中的元素均为小于等于100的非负整数。题目分析:(看题目猜题意:快速傅里叶变换FFT) 我们通过傅里叶变换,实际上是对两个高次函数求了卷积。 以下是来自度娘的解释。 我们可以发x和h的下标的和是相同的。 所以说我们使用做傅里叶变换其实就做了这样一个原创 2017-01-11 08:23:28 · 516 阅读 · 0 评论