自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

linkfqy

                          ——A link to FQY.

  • 博客(266)
  • 资源 (1)
  • 收藏
  • 关注

原创 【模板】Trie树(基于指针)

很常见的字符串处理数据结构…… 参考博客:字符串统计神器——Trie树以前没有怎么认真学过Trie,现在重新打了一遍 用了指针实现,感觉好看多了

2017-06-12 19:46:03 1281 2

原创 Trie树(字典树)

何为Trie树?先容我吐槽一下这个数据结构的名字…… /ˈtriː/?/ˈtraɪ/?傻傻分不清楚Trie树,又称字典树,是一种树形数据结构 被广泛用于字符串的统计Trie树的构造Trie树节点的每个儿子都代表一个字母 那么就可以用某节点到根的路径来表示一个字符串 如下图: (这颗Trie树保存了8个字符串:”A”, “to”, “tea”, “ted”, “ten”, “i”, “i

2017-06-11 21:39:28 973 3

原创 【轮廓线DP,状压DP】BZOJ1087 [SCOI2005]互不侵犯King

题面在这里轮廓线DP的经典题……可以发现,对于当前点(i,j),只有前面n+1个格子与其有关(如下图) 那么这n+1个位置就是(i,j)的轮廓线。 把轮廓线上的状态用位运算压缩一下即可。f[c][s][k]f[c][s][k]表示位置c(滚动数组优化空间),轮廓线上状态s,已经放了k个王的方案数 那么显然,若(i,j)不放王:f[c][ss][k]+=f[c^1][s][k];(ss是新轮

2017-06-09 08:08:23 1108

原创 【斜率优化DP】BZOJ1096 [ZJOI2007]仓库建设

题面在这里典型的斜率优化DP……定义f[i]f[i]表示前i个工厂已经处理(在第i个工厂修建仓库)的最小费用 剩下的事情,就是去枚举离i最近的仓库是哪个 f[i]=Min{f[j]+c[i]+d[i]∗(g[i]−g[j])−(s[i]−s[j])}f[i]=Min\{f[j]+c[i]+d[i]*(g[i]-g[j])-(s[i]-s[j])\} 其中g[]是p[]的前缀和,s[]是d[]*

2017-06-08 12:53:55 954 2

原创 【斜率优化DP】BZOJ1010 [HNOI2008]玩具装箱toy

题面在这里一道典型的斜率优化DP……很明显,定义f[i]f[i]表示前i个玩具的费用 可以得到: f[i]=Min{f[j]+(i−j−1+s[i]−s[j]−L)2}f[i]=Min\{f[j]+(i-j-1+s[i]-s[j]-L)^2\} 其中s[]s[]是c[]c[]的前缀和,方便统计加和 如下变换: f[i]=Min{f[j]+((s[i]+i−L−1)+(−s[j]−j))2}

2017-06-07 22:31:29 938

原创 斜率优化DP 与数形结合思想

前言最近才入了DP优化的大坑…… 发现斜率优化DP还是很有用的 下面会结合一道例题,同时讲解斜率优化DP正文先看一下例题:HDU3507 题目大意:有一串数列,要把它分割成若干段 每一段的代价是 这一段所有数的和 的平方 再加上常数M 求最小的代价和。DP很好推啊,f[i]f[i]表示前i个数字的最小代价和 f[i]=Min{f[j]+(s[i]−s[j])2}+Mf[i]=Min\{f

2017-06-05 20:18:43 1556 2

原创 【模板】Andrew算法 求凸包

凸包问题的一般解法有:Graham算法、Melkman算法、Andrew算法等 Andrew算法是Graham算法的变种。 由于Andrew算法代码简便,效率比较高,笔者更推荐使用Andrew算法参考博客:凸包——Andrew算法

2017-06-04 21:08:04 2070 4

原创 【凸包】HDU1392 Surround the Trees

题面在这里凸包的裸题…… 使用了Andrew算法 参考博客:凸包——Andrew算法

2017-06-04 20:57:23 635 4

原创 凸包——Andrew算法

什么是凸包?凸包的定义如下: 在一个点集D中,按一定顺序选取子集Q 使得Q中所有点顺次连接所构成的封闭凸多边形包住D中所有点可以形象地理解为:有许多个钉子钉在平面上,用一根牛皮筋把所有点包住 如下图: 常用算法凸包问题的一般解法有:Graham算法、Melkman算法、Andrew算法等 由于Andrew算法代码简便,效率比较高,笔者更推荐使用Andrew算法Andrew算法是Graham

2017-06-04 20:52:15 3448 1

原创 【模板】SPFA增广 最小费用最大流

简单的用SPFA增广进行费用流的求解 与EK求最大流类似,只是此时要求最大流的同时费用最小 所以用SPFA增广,就可以费用尽量小模板:

2017-06-02 21:31:34 777 1

原创 【模板】Dinic求最大流

求最大流的常规方法 使用层次图思想,一次增广多条路,效率大大提高关于网络流,戳这里

2017-06-02 21:26:05 547

原创 【模板】EK求最大流

求解最大流问题的最简便方法 但是效率不是很理想关于网络流,可以看这里

2017-06-02 21:22:21 466 1

原创 【模板】左偏树

最常见,同时也是最好写的可并堆关于左偏树,戳这里很久之前写的,请见谅

2017-06-02 21:03:31 413

原创 【模板】Splay

Splay适用于维护序列 用起来很方便,而且很好打关于Splay,戳这里

2017-06-02 20:51:09 444

原创 【模板】非旋转Treap

运用了函数式编程的思想。 能实现更为强大的功能关于非旋转Treap,看这里写得比较简洁:

2017-06-02 20:40:14 531

原创 【模板】【长期施工】算法、数据结构模板集合贴(17.6.13更新至10篇)

前言为了方便学(bei)习(ban),将各种模板在此整理 模板会被分类得很完善,以方便查找(请通过目录进行快速查询) 以后会持续更新……数据结构有一句老话:程序=算法+数据结构 可见数据结构十分重要,这里列出一些平衡树平衡树是非常常见的,功能较为强大的一类数据结构 在OI中有着非常重要的地位。Treap基于旋转 非旋转版本SplaySplay适用于维护一个序列 因为它基于伸展的特性十分利

2017-06-02 20:32:02 3312 2

原创 【模板】基于旋转的Treap

Treap作为一种典型的平衡树, 能实现插入、删除、查找等操作 初学者必学!关于Treap,戳这里写得较为简洁:

2017-06-02 20:22:54 318 1

原创 【最小费用最大流】BZOJ1070 [SCOI2007]修车

题面在这里最小费用最大流的经典题……读题后应该就能意识到:这种资源分配型的问题一般都是网络流然后就去想: 答案要求最短的平均时间,其实就是最短的总时间(相加) 由于求最小值,会往最小费用上面想那么把花费的时间看做费用,流量就可以限制使得方案合法按如下方法建图: 1. 把每个维修人员拆成N*M个点,Ai,jA_{i,j}表示给倒数第j个给i修车 2. S到每个顾客建边。容量=1,费用=0 3

2017-05-31 21:24:10 730

原创 【最小割+对偶图=最短路】BZOJ1001 [BeiJing2006]狼抓兔子

题面在这里对偶图应用的经典题……初看题面,可以明显发现这是一道最小割的裸题 但是数据太大,直接T掉(貌似Dinic可以过)仔细观察可以发现,这是一个S-T完全图 那么就可以转化为对偶图的最短路问题 关于最短路求最大流,可以参考周冬《浅析最大最小定理在信息学竞赛中的应用》下面讲一点自己的想法: 对偶图,指的是对于原图G,新建图G’ 其中G’的所有点对应G中的所有面,G’中的边对应G中两个面的

2017-05-30 18:57:08 1346 3

原创 A*-总结

【前言】A*是被广泛运用于实际生活的一种搜索算法,在OI中也非常实用。【A*的原理】我们来回想一下BFS的原理: 每次从队首取一个状态,用其扩展出新的状态并放入队尾。 那么这个队列是没有优先级的A*其实与BFS类似,只是给每个状态定义了估价函数f(x) 用于估计此状态最终到达目标状态的总代价。 只需要让代价小的先扩展,就能尽可能地将复杂度降到最低。此时估价函数f(x)的选取就很重要了 因为

2017-05-26 08:07:22 672 1

原创 【A*求K短路】POJ2449 Remmarguts' Date

题面在这里K短路裸题…… 关于A*,看这里只要注意S==T的时候最短路不是0即可附上代码:

2017-05-25 21:19:41 506

原创 震惊!用了此方法后,TLE的代码AC了!

前言昨天帮Sdywolf查代码…… 解法和标算一模一样,而且看不出常数大的地方,但是就是TLE了 经过一番检验,发现竟然是读优的问题!正文原来的读优一直调用getchar()…… 以为挺快的,没想到会TLE Manchery大神自己定义了一个与getchar()功能相似的函数:inline char nc(){ static char buf[100000],*p1=buf,*p2=

2017-05-24 08:44:03 3198 1

原创 【A*求k短路】BZOJ1975 [SDOI2010]魔法猪学院

题面在这里A*求k短路的经典题目,关于A*可以看这里附上代码:

2017-05-23 20:56:17 496

原创 【线段树+均摊思想】UOJ #228 基础数据结构练习题

题面在这里首先吐槽一下这个题目的名字【大雾题目意思很简单,但是需要思考的地方很多主要问题在于如何实现区间开根号 试想:两个不同的数x,y开若干次根号后,必然会趋向于一致: 330 227 →\rightarrow 18 15 →\rightarrow 4 4 那么,在进行若干次操作2后,就有可能得到一段连续的相同值 于是,对于一段相同的序列,区间开根号就等价于区间加 对于不能

2017-05-23 15:47:13 1468

原创 QZOI被虐记

今天是QZ市赛…… 早就有预感会被各路神犇踩……想当然地认为T1是一道水题,就随便写了一个贪心…… 结果可想而知,只有5分OrzT2以前做过,水过苦想T3……想到了二分,但是没有一个很好的验证函数 想了半天都没有什么进展,只好写了个O(n3)O(n^3)的玄学验证然后……然后就没有时间打T4了……T_T 惨痛教训……

2017-05-21 15:52:08 647

原创 【思路题】BZOJ4721 [NOIP2016]蚯蚓

题面在这里这是一道很有意思的小题……解法比较巧妙先不考虑蚯蚓变长。首先,通过观察可以发现: 每次被切的蚯蚓的长度一定是递减的 因为蚯蚓只可能变短 那么每次切开得到的两条蚯蚓也是递减的于是,建立三个队列,分别表示: 没有切过的蚯蚓、切开时长度为[px]的蚯蚓、切开时长度为x-[px]的蚯蚓 每次切开时,将左右两半分别放入两个队列的队尾 显然这三个队列都是递减的,取最大值就很简单了现在蚯蚓可

2017-05-20 21:35:30 710 1

原创 【期望DP+最短路】BZOJ4720 [NOIP2016]换教室

题面在这里一道简单的期望DP题……定义f[i][j][0/1]f[i][j][0/1]表示: 前i节课,已经用了j次申请机会,第i节课申请/不申请 那么显然,根据期望的线性性,可以得到:f[i][j][0]=Min(f[i−1][j][0]+w(c[i−1],c[i]),f[i−1][j][1]+k[i−1]∗w(d[i−1],c[i])+(1−k[i−1])∗w(c[i−1],c[i]))f[

2017-05-17 20:46:16 498 1

原创 网络流-最大流

【前言】网络流作为一个经典问题,在OI及实际生活中有着广泛的应用,值得我们仔细研究。【何为网络流?】网络流,是一种资源调配问题,如下图(以下图片均来自网络): 其中,S表示网络流中的源点,是资源的唯一出发点。 T表示网络流中的终点,是各种资源的目的地。 正如水管有粗细之分,道路有宽窄之分, 网络流中的每条边(这里称为弧)都有一个容量cap,表示单位时间最多能通过的资源量。 同时,每条弧

2017-05-15 21:12:15 2185 2

原创 【最短路径树+可并堆/树链剖分】BZOJ1576 [Usaco2009 Jan]安全路经Travel

题面在这里此题最重要的思想就是建立“最短路径树”。 何为最短路径树?就是最短路经过的所有点和边构成的一棵树(以前竟然没有发现这个东西)考虑不经过最短路的最后一条边,其实就是把点x到父亲的边去掉 那么剩下的最短路径必定是这样的: 由一条不在树上的边(u,v)连接x子树和其余部分,则路径为1~u~v~x 可以发现,整个过程只走了一次不在树上的边,这样就保证了答案必定最优 这个方案的答案为:ds

2017-05-11 20:52:10 1081 3

原创 【树状数组+主席树】BZOJ1901 [ZOJ2112]Dynamic Rankings

题面在这里树套树第一题……考虑没有修改(POJ 2104)的情况,就是经典的主席树了 其实就是一个静态的前缀和,利用容斥原理求区间信息但是如果有修改操作呢? 不过是维护这个前缀和罢了。 当然有一个想法,就是修改时O(n)更新后面的所有位置(受此次修改的影响) 这样就太慢了,直接树状数组比较好。 树状数组的每一个单位都是一棵主席树,整个管辖范围的修改都记到它上面修改操作就在树状数组上依次修改

2017-05-02 21:30:24 1282 1

原创 带修改的莫队算法

【前言】普通的莫队算法固然强大,但是不能支持修改操作 于是就有了带修改莫队这种神奇的东西。【做法】普通的莫队可以看这里 那么对于询问的结构体,可以多记录一个信息ti 表示到这个询问为止最后做的修改的编号至于排序么……与普通莫队类似,只是把ti作为第3个关键字 (当R在同一块的,就按ti排序)处理时,要使当前区间,修改的指针一起动 (每次线性移动修改指针(修改/撤销),使得前ti个

2017-04-29 21:22:32 2119 1

原创 【游记】ZJOI 2017 Day2 #3

今天就考试了,感觉还不错 T1看上去前40%的部分分很可做,但是我想了两个小时硬是没想出来Orz 于是想起上次省选的教训,仔细看了下T2,直接N*Q秒掉20分 至于T3……貌似很像后缀数组,但是我并不会 直接打了一个10分暴力…… 然后,然后时间久没有了……出了考场才知道后缀数组是错误的……总之,这次把能得到的分数都拿来了,还是比较可以的

2017-04-28 22:21:39 781 1

原创 【游记】ZJOI 2017 Day2 #2

今天又听了一天的课……上午主要是ZZX大神在讲随(luan)机(gao)题 学会了用某种猥琐方法求最大团Orz……下午由某不知名神级教练讲数据结构Orz 直接硬杠了一下午省选题……这是我见过最叼的教练顺带一提,明天就要考试了,准备好被踩……

2017-04-27 20:20:27 839 1

原创 【带修改莫队】BZOJ2120 数颜色

题面在这里带修莫队第一题……十分简单,没有什么可讲的 不会的可以看这里但是查了一个下午……心态奔溃了 原因竟然是pow(n,2/3)的2/3是整数除,外加一些奇怪的东西附上代码:#include<cstdio>#include<algorithm>#include<cmath>using namespace std;const int maxn=10005,maxs=1000005;i

2017-04-27 16:24:53 1173 1

原创 莫队算法

【前言】莫队算法(Mo’s algorithm)是由莫涛队长发明的,一种处理区间问题的离线算法,由于其代码简便,常数巨小,适合各种打暴力。另:关于带修改的莫队,可以看这里【做法】前提:如果已知区间[L,R]的答案,可以很快(log或常数级别)地得到区间[L±1,R±1]的答案。 对于区间询问[L,R],我们可以先读进来所有询问,按照某种顺序依次处理(线性移动L,R端点),就可以得到所有询问的答案。

2017-04-26 21:52:41 1608 1

原创 【游记】ZJOI 2017 Day2 #1

今天一早,就去余姚中学听大哲哥讲课,讲得很好 只能勉强听懂半节课orz 不过值得一提的是,余姚中学的饭菜实在是…… 可能是学校历史悠久的缘故吧,建筑都比较旧 机房的环境也比较差……都是上古时期的设备 嗯,就这样,明天继续听(bei)课(nue)

2017-04-26 19:48:35 815 1

原创 【莫队算法】BZOJ2038 [2009国家集训队]小Z的袜子

题面在这里莫队的经典题…… 对于已知区间[L,R],它的答案是: ∑C2c[i]的个数C2R−L+1\frac{\sum C_{c[i]的个数}^2}{C_{R-L+1}^2} 由于处理分数比较麻烦,所以我们只要维护分子即可 即:对于变化的c[i]个数(设为x),维护C2xC_x^2 减去原来的,加上后面的即可附上代码:#include<cstdio>#include<algorithm

2017-04-26 14:07:06 1089 1

原创 【主席树|莫队|离线树状数组】BZOJ1878 [SDOI 2009]HH的项链

题面在这里这道题有三种解法,以下分别介绍(等我A掉会补全)【主席树】关于主席树戳这里造一个lst[i]表示位置i的这个数上一次出现的位置(如果没有就是0) 那么对于每次询问L~R范围里的数字种数 其实就是询问对于L≤i≤RL≤i≤R,满足lst[i]<Llst[i]<L的个数 那么就很好搞了,对lst造N棵值域线段树 询问就直接找到L-1这个位置看它前面有几个 复杂度O(Qlogn)O(Q

2017-04-25 07:18:18 1058 1

转载 【涨姿势】Windows下调整系统栈大小(附图)

我们知道,递归以及开局部变量都是要占用栈空间的 而Windows默认给每个线程仅仅分配1M内存(大神说是这样的) 这时就需要手动调整系统栈大小了。以下转自Lynstery: 在用gcc/g++编译时指定参数 -Wl,–stack=size size是栈的大小,单位为字节。 比如我现在要编译一个名为hh的c++程序,栈的大小要16M,就这样如果是像本蒟蒻一样用dev-c++的,那么可

2017-04-23 18:32:05 9391 3

原创 【并查集+离线】BZOJ1015 [JSOI2008]星球大战starwar

星球大战starwar 省选前的信心题……题面: Description  很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系。某一天,凭着一个偶然的 机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球。这些星球通过特殊的以太隧道互相直 接或间接地连接。 但好景不长,很快帝国又重新造出了他的超级武器。凭借这超级武器的力量,帝国开始有计划 地摧毁反抗军占

2017-04-23 15:36:38 780 1

周东《浅析最大最小定理在信息学竞赛中的应用》

周东大神关于s-t平面图与对偶图的转化PPT 可以快速求解s-t平面图中的最大流问题 解释很详细,很有帮助

2017-05-30

空空如也

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

TA关注的人

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