自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

蒟蒻柴犬首相的博客

蒟蒻柴犬首相的博客

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

原创 字符串匹配——KMP算法(flag)史上最容易懂的KMP解析

flag史上最容易懂的KMP解析如果要学习KMP的正确性请期待以后的博客KMP概述KMP算法是由Knuth/Morris/PrattKnuth/Morris/PrattKnuth/Morris/Pratt三个人设计的线性字符串匹配算法。 这个算法用到了一个函数“前缀函数”,这里称作π(i)π(i)\pi(i)。下面我们看几个概念文本T:是要查询的目标文章,长度记作...

2018-03-12 20:24:41 694 1

原创 分块——例题2

不懂分块的可以参见博客: 分块传送门例题2题目描述 给出一个长为n的数列,以及n个操作,操作涉及区间加法,询问区间内小于某个值x的元素个数。 输入格式 第一行输入一个数字 n 第二行输入 n 个数字,第 i 个数字为a[i],以空格隔开 接下来输入 n 行询问,每行输入四个数字 opt, l,r,c, 以空格隔开 若 opt = 0,表示将 [l,r] 的之间的数都加 c...

2018-03-12 18:04:14 280

原创 分块——概述+例题1

分块用来解决什么问题分块是用来解决区间和单点的修改和查询等问题的。 拿到这种问题大家第一反应就是用一些数据结构去维护,如线段树和树状数组mlognmlog⁡nm \log n的时间内解决。分块有着惊人短的代码量,和极其简单的代码思想。。比线段树好debug多了。分块的数据储存模式对于一个长度为nnn的序列,我们把它分成n−−√n\sqrt n左右块,并且使这n−−√n\sqrt ...

2018-03-10 19:34:38 513

原创 DP复习——最长公共子序列 LCS 问题

LCS如果有两个串s1s1s1和s2s2s2,在它们所有相同的子序列中,长度最大的,就是最长公共子序列的长度。状态转移方程这个问题中的每一个状态都跟两个串有关系,所以状态我们设置为二维。f[i][j]f[i][j]f[i][j]代表s1s1s1的前iii个字符和s2s2s2的前jjj个字符最长公共子序列长度。 我们采用O(n2)O(n2)O(n^2)的复杂度方法来枚举两个串中所有的字...

2018-03-09 21:34:32 200

原创 DP复习——背包问题的变化

以下一些文字来源于背包九讲。输出方案输出方案的方法,就是在更新dpdpdp数组的时候,顺便记录下当前的状态是由哪个状态更新而来的,类似链表及记录地址的方法;对于01背包这种可以直接按照值来判断: 例如01背包的状态转移方程是f[j]=max(f[j],f[j−w[i]]+v[i])f[j]=max(f[j],f[j−w[i]]+v[i])f[j]=max(f[j],f[j-w[i]]...

2018-03-09 12:56:53 239

原创 DP复习——泛化物品背包

泛化物品(来源于背包九讲)定义考虑这样一种物品,它并没有固定的费用和价值,而是它的价值随着你分配给它的费用而变 化。这就是泛化物品的概念。 更严格的定义之。在背包容量为 V 的背包问题中,泛化物品是一个定义域为 0..V 中的整数的 函数 h,当分配给它的费用为 v 时,能得到的价值就是 h(v)。 这个定义有一点点抽象,另一种理解是一个泛化物品就是一个数组 h[0..V],给...

2018-03-08 13:22:15 1647 1

原创 DP复习——背包九讲代码集合

一、01背包二、完全背包三、多重背包四、混合三种背包五、二维费用的背包问题六、分组背包七、有依赖的背包问题八、泛化物品九、背包问题的变化...

2018-03-07 21:39:09 316

原创 DP复习——有依赖的背包问题

有依赖的背包问题这类问题是01背包的变形。所有的物品分为两类,一类是主件,另一类是附件,每一个附件都有它的主件,选取它的主件之后才能选取附件。例题——金明的预算方案【问题描述】 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“ 你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过 N元钱就行 ”。今天一早,金明...

2018-03-07 21:34:06 4804

原创 DP复习——分组背包

分组背包分组背包和01背包的不一样的地方在于,把物品分成了k组,每一组中的所有物品最多取一件。例题题目背景 直达通天路·小A历险记第二篇 题目描述 自01背包问世之后,小A对此深感兴趣。一天,小A去远游,却发现他的背包不同于01背包,他的物品大致可分为k组,每组中的物品相互冲突,现在,他想知道最大的利用价值是多少。 输入输出格式 输入格式: 两个数m,n,表示一共有n件...

2018-03-07 20:54:50 337

原创 HLOJ421 潜水员的规划

题面题目描述 潜水员为了潜水要使用特殊的装备。他有一个带2种气体的气缸:一个为氧气,一个为氮气。让潜水员下潜的深度需要各种的数量的氧和氮。潜水员有一定数量的气缸。每个气缸都有重量和气体容量。潜水员为了完成他的工作需要特定数量的氧和氮。他完成工作所需气缸的总重的最低限度的是多少?   例如:潜水员有5个气缸。每行三个数字为:氧,氮的(升)量和气缸的重量:   3 36 120   10 2...

2018-03-07 20:46:54 418

原创 DP复习——二维费用的背包

二维费用的背包就是一个01背包的进化版。但是涉及状态的时候要设两种状态。例题题目背景 NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安 全技术问题一直大伤脑筋,因此在各方压力下终止了航天 飞机的历史,但是此类事情会不会在以后发生,谁也无法 保证,在遇到这类航天问题时,解决方法也许只能让航天 员出仓维修,但是多次的维修会消耗航天员大量的能量, 因此NASA便想设计一...

2018-03-07 20:34:08 1137

原创 DP复习——混合三种背包

混合三种背包混合三种背包就是混合了01背包,完全背包,多重背包三种背包的问题。也就是说每种物品有的只能取一次,有的能取多次,有的数量充足。解法这类题目其实很简单。 01背包和多重背包可以一起化为一个01背包做。至于完全背包,只要判断一下内循环的枚举方向就行了。伪代码for(1..n) if(第i种物品是完全背包) for(w[i]..v)...

2018-03-07 19:29:48 316

原创 DP复习——多重背包

多重背包多重背包是在完全背包的基础上,对每种物品都有一个数量限制的一种背包。例题题目描述 在《Harry Potter and the Deathly Hallows》中,Harry Potter他们一起逃亡,现在有许多的东西要放到赫敏的包里面,但是包的大小有限,所以我们只能够在里面放入非常重要的物品,现在给出该种物品的数量、体积、价值的数值,希望你能够算出怎样能使背包的价值最大...

2018-03-07 19:18:57 355

原创 DP复习——完全背包

完全背包完全背包,就是有nnn种物品,每种物品每个都有一个重量wiwiw_i和一个价值viviv_i,每种物品都有足够多个,还有一个mmm容量的背包。我们的任务就是取若干个物品,在∑所取的w[i]<=m∑所取的w[i]<=m\sum_{所取的}w[i]∑所取的v[i]∑所取的v[i]\sum_{所取的}v[i]。例题题目描述 有一个负重能力为m(m<=300)的...

2018-03-07 19:03:37 274

原创 DP复习——01背包

01背包一句话的概括: n件物品,一个容量为v的包,每件物品都有重量w和价值v。选择若干件物品,∑所取的wi<=v∑所取的wi<=v\sum_{所取的} w_i∑所取的vi∑所取的vi\sum_{所取的}v_i例题题目描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一...

2018-03-07 18:54:57 254

原创 AHOI2001 HLOJ419 质数和分解

题面题目描述   任何大于 1 的自然数n都可以写成若干个大于等于2且小于等于n的质数之和表达式(包括只有一个数构成的和表达式的情况),并且可能有不止一种质数和的形式。 例如,9 的质数和表达式就有四种本质不同的形式: 9=2+5+2=2+3+2+2=3+3+3=2+7。   这里所谓两个本质相同的表达式是指可以通过交换其中一个表达式中 参加和运算的各个数的位置而直接得到另一个表达式。...

2018-03-07 18:31:13 475

原创 HLOJ415 拔河比赛

题面题目描述 一个学校举行拔河比赛,所有的人被分成了两组,每个人必须(且只能够)在其中的一组,要求两个组的人数相差不能超过1,且两个组内的所有人体重加起来尽可能地接近。 输入格式 输入数据的第1行是一个n,表示参加拔河比赛的总人数,n<=100,接下来的n行表示第1到第n个人的体重,每个人的体重都是整数(1<=weight<=450)。 输出格式 输出数据应该包...

2018-03-07 12:58:24 746

原创 poj1741 tree 男人八题之一

题面题目描述 给一颗n个节点的树,每条边上有一个距离v(v<=1000)。 定义d(u,v)为u到v的最小距离; 给定k值,求有多少点对(u,v)使u到v的距离小于等于k。 输入格式 输入有多组数据,以两个0结尾 每组数据第一行两个整数n,k,n<=10000,k<2^31 接下来n-1行,每行三个整数x,y,v,表示点x到点y有一条边距离是v,v<=10...

2018-03-05 12:36:35 202

原创 树的重心

定义在一棵树中,若有一个点,除去它之后,树变成了两个连通块,这两个连通块的规模尽可能地接近,那么这个点就是这棵树的重心。 很显然,每棵树都有至少一个重心。作用树的重心可以把一棵无根树转化成有根树,同时让dfs的效率更高;保证了树的深度一定小于n2n2\frac n2求树的重心采用一遍dfs,计算每个点的相连的最大的连通块规模,求取最大值;再在所有最大值中找出最小的,这个点...

2018-03-05 12:17:47 1072 1

原创 HLOJ486 种花小游戏

题目描述植物大战僵尸这款游戏中,还有个特别有意思的赚钱方式——种花(能长金币的花)。 种出来的金币需要玩家点击才能得到,或者,玩家可以购买一只蜗牛来帮助捡金币。然而,蜗牛爬得 慢是众所周知的。所以,场上有若干金币时,蜗牛总是喜欢以最少的行程来捡走所有的金币。 现在告诉你场上n个金币所在位置的坐标,以及蜗牛所在位置,让你求出蜗牛捡走所有金币的最小行程 。 输入格式 第一行一个正整数n,...

2018-03-03 19:18:16 884

原创 组合数学——容斥原理和错位排列

真的,学了组合数学你会克服公式恐惧症0.0深有体会……容斥原理设A1,A2,…,AnA1,A2,…,AnA_1,A_2,…,A_n为有限集合,用|Ai||Ai||A_i|表示集合AiAiA_i中的元素个数那么有这样的结论: |A1∪A2∪…∪An|=∑i=1n|Ai|−∑1≤i<j≤n|Ai∩Aj|+∑1≤i<j<k≤n|Ai∩Aj∩Ak|−…+(−1)n−1|A1∩A...

2018-02-27 18:38:51 2472

原创 组合数学——计数原理和计数公式

加法原理和乘法原理加法原理是分类,乘法原理是分步。这个不用多解释了。无重复的排列组合排列从nnn个不同元素中取m(m≤n)m(m≤n)m(m\leq n)个不同的元素,按照一定的顺序排成一列,叫做从nnn个不同元素取出的一个排列。 这个排列中没有重复元素,所以叫无重复的排列。记作AmnAnmA_n^m或PmnPnmP_n^m。 明显可以得到计算公式: Pmn=n(n−...

2018-02-26 19:30:25 4591

原创 福州集训DAY5及以后几天

接下来讲的东西基本上都没有涉及过,这两天只是整理了一下所有资料,并没有什么总结好写的。这些知识以后每一块都学过之后就会出博客。

2018-02-10 15:22:09 177

原创 福州集训DAY3

今天没什么收获。主要是考试发挥终于正常拿了160rank3(昨天可是爆零)。

2018-02-08 20:46:55 158 1

原创 福州集训DAY4

数论上午讲的数论我基本都会(但是题目都不会做啊)。 有这些注意点:c++中的模运算和通常意义上的mod模运算是不一样的。c++中%运算保留符号,也就是负数取模之后还是负数。但是通常意义上的mod运算得到的结果都是自然数。c++的/并不是向下取整,而是向0取整。(先把符号去掉,再向下取整,再添上符号)。原根的概念和用法。测试真不愧是省选模拟赛。三道贼难的省选数论题。这里题解...

2018-02-08 20:40:17 180

原创 福州集训DAY2

打了一天的水漂上午的考试就不多说了。。感觉写了160分,但是实际上爆零???我也不知道为何,可能是没有建子文件夹,也有可能是没有删中间输出,到时候出来源程序再看吧。 第一题是一道暴力模拟题,可以用二分答案做。这就不多说了,只要理解清楚题意就基本可以了。 第二题是一道玄学的区间分组问题。他一个玄学的题解我也有点不记得了。。 第三题是一道在有向图上找最长链的问题。 下午讲的贪心和分治,都是

2018-02-06 16:19:57 178

原创 2018福州集训DAY1

2018.2.5主要讲了搜索搜索最基本操作bfs和dfs。这两种手段在不同的问题中能有不同的效果。 如果有这样一棵搜索树: dfs是从根结点开始每一次都随便选一条路,走到叶节点再返回;二bfs是从根节点开始一层一层向下搜索。如果每一层都是无限的,那么需要用dfs,如果没有明确的叶节点,那么就用bfs。剪枝剪枝就是这样: 搜到一个结点 把子树全部切掉。剪枝一般有这样的

2018-02-05 22:04:43 231

原创 《算法导论》学习笔记——扩展欧几里得原理

扩展欧几里得算法的原理扩展欧几里得算法即欧几里得算法的一个变形。我们先来看《算法导论》上的一段伪代码。EXTENDED-EUCLIDif b==0return(a,1,0)else(d_,x_,y_)=EXTENDED-EUCLID(b,a mod b)(d,x,y)=(d_,y_,x_-round(a/b)*y_)return (d,x,y)我们可以发现递归到最后是求出

2018-02-05 13:26:13 392

原创 《算法导论》学习笔记——如何证明有无穷多个素数

证明的定理在自然数集合中,素数有无穷多个。证明假设我们已知这么几个素数p1,p2,p3……pn'>p1,p2,p3……pnp1,p2,p3……pnp_1,p_2,p_3……p_n,我们需要证明的是已知这些素数能推出第n+1'>n+1n+1n+1个素数,那么数学归纳法就可以证明有无穷多个素数了。 我们构造一个新数d=p1×p2×p

2018-02-05 12:34:05 1063

原创 《算法导论》学习笔记——GCD定理的证明

GCD定理GCD定理是欧几里得算法的灵魂。欧几里得算法就是我们以前说的“辗转相除法”。 GCD定理: gcd(a,b)=gcd(b,a%b)'>gcd(a,b)=gcd(b,a%b)gcd(a,b)=gcd(b,a%b)gcd(a,b)=gcd(b,a\%b)证明我们的证明就是要证明上面两者相互能整除。 设gcd(a,b)=d'>gcd(a,b)=dgcd(a,b)

2018-02-04 13:43:10 574

原创 Trie 树

Trie树Trie树是一个时间换空间的字符串结构。它是一个二十六叉树。它是这样存字符串的: 比如对于一个字符串“abcd”,它先看看根节点相连的点有没有a,那就新开一个点;继续找,看看a相连的点有没有b,重复上述操作…… 然后为了避免一个字符串是另外一个字符串的前缀的问题,我们再在每一个结点上面新开一个域,就是endflag域,代表有一个字符串在这里结束。HLoj611 Trie树

2018-01-07 18:51:38 219

原创 树状数组

树状数组先给一张树状数组的图片吧,有图有真相。 树状数组就长这样↑,因为看上去像一棵树,所以就叫树状数组了。我们用cc数组来存储aa数组的某些内容,从而优化时间复杂度。如何实现lowbit先来了解一个概念lowbitlowbit。从字面意思上理解:就是最低的二进制位。在树状数组中,这个的意思是:把一个整数化成二进制,最低的“1”表示的数是多少。 例如:如果要求low

2018-01-05 18:27:58 282

转载 Photoshop CS6常用快捷键汇总

PS快捷键大全一、工具箱(多种工具共用一个快捷键的可同时按【Shift】加此快捷键选取)矩形、椭圆选框工具 【M】 移动工具 【V】 套索、多边形套索、磁性套索 【L】 魔棒工具 【W】 裁剪工具 【C】 切片工具、切片选择工具 【K】 喷枪工具 【J】 画笔工具、铅笔工具 【B】 像皮图章、图案图章 【S】 历史画笔工具、艺术历史画笔 【Y】 像皮擦、背景擦

2017-12-28 18:16:34 2769

原创 最大流问题

定义网络网络就是一个有向带权图。为什么叫网络,我也不知道……我们可以进行一系列的类比:网络流就代表则运输水管,每一根水管都有一个单位时间内的运输上限,整个运水系统进入水量和出水量是相等的。所以:有向图的权值我们称为容量。流量就是单位进入系统的入度和出去系统的出度。容量的意义就在于,单位时间内流过的“水流”必须小于等于这个容量值。 再回头看一下网络的定义: 网络的

2017-12-28 18:14:42 176

原创 《算法导论》学习笔记——裴蜀等式及其扩展的证明

裴蜀等式及其扩展裴蜀等式是exgcdexgcd的骨髓,是建立在gcdgcd,它保证了exgcdexgcd的有解性。 裴蜀等式 存在让ax+by=gcd(a,b)ax+by=gcd(a,b)的x,yx,y; 扩展 gcd(a,b)gcd(a,b)是{ax+by:x,y∈Z}\{ax+by:x,y∈Z\}的最小正元素。证明先设ss是这个集合中最小正元素。 设q=⌊as⌋q=\lfloor \f

2017-12-28 08:02:46 819

原创 数论——Baby Step Giant Step大步小步算法

bsgs算法Baby Step Giant Step算法,简称BSGS算法,也称为大步小步算法.解决对象离散对数:当x≡Gk(modm)x≡Gk(modm)x\equiv G^k\pmod m时,logG(x)≡k(modϕ(m))logG(x)≡k(modϕ(m))log_G(x)\equiv k\pmod{\phi(m)}。此处的logG(x)logG(x)log_G(x)是x...

2017-12-19 19:42:42 3852

转载 OI省选知识汇总

简单列了一点 1.1 基本数据结构 1. 数组 2. 链表,双向链表 3. 队列,单调队列,双端队列 4. 栈,单调栈 1.2 中级数据结构 1. 堆 2. 并查集与带权并查集 3. hash 表     自然溢出     双hash 1.3 高级数据结构 1. 树状数组 2. 线段树,线段树合并 3. 平衡树     Treap 随机平衡二叉树     Splay

2017-12-17 21:04:51 1134

原创 数论——素数

判定素数穷举法判定bool check(int k){ if(k==0||k==1)return false; for(int i=2;i<=sqrt(k);i++) if(k%i==0) return false; return true;}埃氏筛法void make_primetable(int n){ memset(is_prime,tru

2017-12-16 19:08:58 358

原创 数论——斐波那契练习题二——斐波那契变式

题面题目描述定义一个数列: f(0)=a,f(1)=b,f(n)=f(n−1)+f(n−2)f(0)=a,f(1)=b,f(n)=f(n−1)+f(n−2)f(0)=a,f(1)=b,f(n)=f(n−1)+f(n−2)f(0) = a, f(1) = b, f(n) = f(n - 1) + f(n - 2) f(0)=a,f(1)=b,f(n)=f(n−1)+f(n−2)f(0)=a,f(1

2017-12-14 20:40:51 849

原创 数论——斐波那契练习题一——斐波那契中的gcd

题面题目描述对于Fibonacci数列:1,1,2,3,5,8,13……大家应该很熟悉吧~~~但是现在有一个很“简单”问题:第n项和第m项的最大公约数是多少? 输入输出格式 输入格式: 两个正整数n和m。(n,m<=10^9) 注意:数据很大输出格式:Fn和Fm的最大公约数。 由于看了大数字就头晕,所以只要输出最后的8位数字就可以了。输入输出样例输入样例#1: 复制 4 7 输出样例

2017-12-14 20:21:51 1317

空空如也

空空如也

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

TA关注的人

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