C++算法大全
文章平均质量分 78
C++运用其实是很简单的,但是对于OI竞赛者们算法是加快运行效率的一项重要内容所以算法一定要学好!
下面就是我带来的C++算法入门讲解
正汰
梦好美啊!好想时间静止,让我去看看这个世界!但时间却依旧悄悄流逝,而自己却什么也没有做,宛如梦初...
展开
-
【后缀数组】后缀排序
最近几天有很多题目没有写,尽量补上吧。hz2016评测《《点击访问caioj《《点击访问后缀数组》后缀自动机树状数组》线段树其实两种都是用一个特殊的简单结构,维护一部分高级算法的查询结构。后缀自动机顾名思义,就是处理后缀的啦,这道题是模板题,把数组的所有后缀按照大到小排序。具体还是看代码注释吧,结合代码会比较好理解。#include#include原创 2017-09-25 19:22:26 · 889 阅读 · 0 评论 -
【后缀数组】不可重叠最长重复子串
hz2016评测《《点击访问caioj《《点击访问这题阴森可怕,两个后缀可以不相同?哦天哪,怎么判断呢。于是,某个聪明的人发现,后缀中两两字符的ANSI值的差是相等的,于是我们可以维护一个由差值组成的后缀数组。所以呢,我们就可以用后缀数组解这道题了,但是这一题,我们还要引入一个新的概念height数组和h数组。height数组的定义就是排名为 i 与 i-1 的最长原创 2017-09-26 18:42:31 · 882 阅读 · 0 评论 -
【网站建设】关于链接问题
昨晚22:19分遭到了来自16个国家的超过30台服务器造成的500多G流量攻击,导致服务器数据丢失,现已回复,可是链接问题无法解决,大家可以进来直接搜索文字标题,对此致意。查看原文:http://hz2016.tk/blog/?p=23原创 2017-09-24 16:59:36 · 306 阅读 · 0 评论 -
【AC自动机】统计单词出现个数-数据增强修改
这个的话!=0会导致有一些点找失败指针就是fail时出错找不到,所以就把一些没用的点.s=0的点也放进去bfs搜一遍,然后记录为-1以防止这种情况出现。void solve(){ int x=0,len=strlen(a+1),j; for(int i=1;i<=len;i++){ int y=a[i]-'a'+1; while(x!=0原创 2017-09-22 21:00:37 · 464 阅读 · 0 评论 -
【AC自动机】地图匹配
hz2016评测《《点击访问《《增加了内存caioj《《点击访问这题其实还是模版题吧,说难不难,说不难还是很难。我们不能按照暴力的思想,给图for8个方向建树。这样会超时的。所以悲伤的我们只好测试可不可以反着建。最后我们总结出反着建句子的字典树,然后离线找匹配。例如一个5*5的地图111111222112321122211原创 2017-09-23 10:33:20 · 613 阅读 · 0 评论 -
莫比乌斯反演入门及推导
参考于http://www.cnblogs.com/chenyang920/p/4811995.html改成更容易理解的一个格式吧。这个文章主要ACM中的莫比乌斯反演公式,自己看《组合数学》很难,又很少博客写这些内容,所以chenyang920就写了一篇这样的文章就自己想了种证明方法,觉得比《组合数学》的证明简单些,就写一下,希望对初学莫比乌斯反演的同学有帮助。PS:下面公原创 2017-09-22 19:16:53 · 1183 阅读 · 0 评论 -
【莫比乌斯反演】GCD1
还是不要脸的先给链接hz2016评测《《点击访问caioj《《点击访问这题是莫比乌斯反演的模板题只要让F(t)=满足gcd(x,y)%t==0的数对个数 f(t)满足gcd(x,y)=t的数对个数,则F(t)和f(t)就存在莫比乌斯反演的关系了。显然F(t)=(b/t)*(d/t) 因为如果gcd(x,y)=1,则gcd(x?k,y?k)=k,所以我们把b和d同时除以k原创 2017-09-22 19:46:03 · 949 阅读 · 0 评论 -
【线筛】线性筛选素数
hz2016评测《《点击跳转caioj《《点击跳转线性筛选,什么名词,听不同,通俗就是减少后面搜索状态而已嘛。具体还是看注释吧,就是On求素数。#include#include#include#include#include#include#include#include#define Maxprime 15485863#define原创 2017-09-22 13:14:08 · 542 阅读 · 0 评论 -
【AC自动机】统计单词出现个数-map版
AC自动机有很多版本,但是上一个版本的话找字典树结点的儿子要for,暴力去for,这个很费时间,所有我们可以加map去优化。#include#include#include#include#include#include#include#include#define Maxchar 1000000#define Maxm 10000#define Max原创 2017-09-22 13:06:12 · 505 阅读 · 0 评论 -
【AC自动机】统计单词出现个数
hz2016评测《==点caioj.cn《==点#include#include#include#include#include#include#include#include#define Maxchar 1000000#define Maxm 10000#define Maxn 50#define Maxs 26#define mes原创 2017-09-21 20:52:50 · 711 阅读 · 0 评论 -
【Manacher】最长回文子串
caioj任意门hz2016评测传送门可以的话来一下hz2016评测吧,有的题caioj没有的我也可以给到数据嘛。#include#include#include#include#include#include#include#include#define Maxchar 100000#define mes(x,y) memset(x,y,s原创 2017-09-21 20:36:26 · 241 阅读 · 0 评论 -
EXKMP模版:最长共同前缀长度
模版题,嗯嗯,我也是这么觉得的。但是模版嘛还是很难的,要多背,不会背的话qaq呵呵。hz2016评测链接caioj链接题目链接就在上面,尽量过来我的给我增点能量嘛。先上代码#include#include#include#include#include#include#include#include#define Maxc原创 2017-09-20 13:55:41 · 562 阅读 · 0 评论 -
KMP模版:子串是否出现
caioj《===主站链接hzoj《===我的一个分站链接其实你们可以用hzoj的,hzoj会快很多,我这里每一题我都会发博客,都会在上面提交,基本上都有数据,起码比你去其他地方找好得多。【题意】有两个字符串SA和SB,SA是母串,SB是子串,问子串SB是否在母串SA中出现过。如果出现过输出第一次出现的起始位置和结束位置,否则输出"NO"【输入文件】第一行SA(原创 2017-09-18 20:04:35 · 535 阅读 · 0 评论 -
Qtree树链剖分
此举是为了重新回到CSDN,自己博客写炸了。 然后嗯,先是推广一下我们的oj小白菜oj oj很好,很适合初学者今次的题目还是很难得。 传送门 具体看看代码吧,重点是ST表管理和普通树管理。#include<queue>#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algori原创 2017-08-25 09:55:58 · 338 阅读 · 3 评论 -
spoj2666 Qtree4(类似于bzoj1095: [ZJOI2007]Hide 捉迷藏)详解
题目大意: 给出一棵树,初始每个节点为黑色。 C操作改变一个节点的颜色。 A操作询问树上最远的两个黑色节点的距离。这道题我也是学了好久。解法: 我用到的是动态点分治,当然大牛们打LCT也是可以的(万能的LCT!!) 先普及一下树的重心(相信很多人都知道) 这里写图片描述 相对于上面这棵树,用f[i]表示删除i之后剩下的最大的子树的节点数(第一次听可能有点懵逼) 拿节点原创 2017-09-03 15:21:14 · 376 阅读 · 0 评论 -
准备转一下博客啦啦
hz2016.space 新博客大约在中考后完成,大家期待一下不同于csdn的感受吧原创 2017-06-07 13:25:10 · 746 阅读 · 0 评论 -
干货:必读的kmp
http://pan.baidu.com/s/1hr76U1Y 最近就只再弄这个傻傻的东西 大家好好读,这个干货很好用。 最近写了很多一会更树形DP原创 2017-03-06 13:40:29 · 588 阅读 · 0 评论 -
[pku1743]不可重叠最长重复子串
题目还是自己找吧,我有点懒啦。 今天我写一下后缀数组的博客,php的更新鲜停一天。 给定一个字符串,求最长重复子串,这两个子串不能重叠。 算法分析: 先二分答案,把题目变成判定性问题:判断是否存在两个长度为k的子串是相同的,且不重叠。解决这个问题的关键还是利用height数组。把排序后的后缀分成若干组,其中每组的后缀之间的height值都不小于k。例如,字符串为“aabaaaab”,当k=原创 2016-12-14 13:07:04 · 934 阅读 · 0 评论 -
[pku3261]可重叠的k次最长重复子串
还是很懒,今天要贴很多代码就允许我懒一些吧。 给定一个字符串,求至少出现k次的最长重复子串,这k个子串可重叠。 算法分析: 这题的做法和上一题差不多,也是先二分答案,然后将后缀分成若干组。不同的是,这里要判断的是有没有一个组的后缀个数不小于k。如果有,那么存在k个相同的子串满足条件,否则不存在。这个做法的时间复杂度为O(nlogn)。#include<cmath>#include<cst原创 2016-12-14 13:11:35 · 1076 阅读 · 0 评论 -
[spoj694]不相同的子串的个数
给定一个字符串,求不相同的子串的个数。 算法分析: 每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相同的前缀的个数。如果所有的后缀按照suffix(sa[1]), suffix(sa[2]),suffix(sa[3]),……,suffix(sa[n])的顺序计算,不难发现,对于每一次新加进来的后缀suffix(sa[k]),它将产生n-sa[k]+1个新的前缀。但是其中有he原创 2016-12-14 13:12:53 · 739 阅读 · 0 评论 -
[POJ2774]Long Long Message
Description The little cat is majoring in physics in the capital of Byterland. A piece of sad news comes to him these days: his mother is getting ill. Being worried about spending so much on railway原创 2016-12-14 12:59:49 · 564 阅读 · 0 评论 -
[poj1743]不可重叠最长重复子串
懒死了。 http://poj.org/problem?id=1743 题目鲁鲁拉。 (1)不可重叠最长重复子串(pku1743) 给定一个字符串,求最长重复子串,这两个子串不能重叠。 算法分析: 先二分答案,把题目变成判定性问题:判断是否存在两个长度为k的子串是相同的,且不重叠。解决这个问题的关键还是利用height数组。把排序后的后缀分成若干组,其中每组的后缀之间的height值都不原创 2016-12-11 15:09:18 · 2364 阅读 · 2 评论 -
[ural1297]最长回文子串
我也没有题目啦 就是说给一个字符串求出字串中式回文的最长的字串。。好乱啦。 给定一个字符串,求最长回文子串。 算法分析: 穷举每一位,然后计算以这个字符为中心的最长回文子串。注意这里要分两种情况,一是回文子串的长度为奇数,二是长度为偶数。两种情况都可以转化为求一个后缀和一个反过来写的后缀的最长公共前缀。具体的做法是:将整个字符串反过来写在原字符串后面,中间用一个特殊的字符隔开。这样原创 2016-12-08 13:41:52 · 775 阅读 · 0 评论 -
[FJOI2007]轮状病毒
提交传送门 就是公式嘛 F[i]=F[i-1]*3+F[i-2] Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的。一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道。如下图所示 N轮状病毒的产生规律是在一个N轮状基中删去若干条边,使得各原子之间有唯一的信息通道,例如共有16个不同的3轮原创 2016-11-27 16:25:34 · 742 阅读 · 0 评论 -
[JSOI2007]字符加密Cipher
后缀数组的利用 题目太长不放了 题目#include<cmath>#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>using namespace std;char a[210000];int wr[210000];int rank[210000];in原创 2016-11-30 12:53:49 · 538 阅读 · 0 评论 -
NOIP普及提高总结 (2)
提高组目测145原来245的,官方说有一道题丢了。 估计也没办法了。 现在就讲讲提高组的题解吧。 D1T1: 题目 典型数学题嘛。#include<cmath>#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>using namespace std;in原创 2016-11-25 13:07:19 · 579 阅读 · 1 评论 -
NOIP比赛啦。
noip比赛11月19日 报考提高组的我们也要准备了。 很晚了,明天再发题目,再来一波题解。 最近做了好多题啊。原创 2016-11-14 21:07:19 · 581 阅读 · 0 评论 -
提高组训练总结
很好。 明天就是旅游了。 今天写个总结来概括一下这周训练的收获吧。 训练从11.13开始至11.17共5天。 这5天每天都有一套模拟题。 日期 模拟题 分数 总结收获 11.13 SC theme park 210 11.14 Dream Team 290 11.15 HZWER NOIP2007模拟题原创 2016-11-18 07:28:33 · 548 阅读 · 0 评论 -
NOIP普及提高总结
参加提高组的我心力憔悴。 所以还是刷刷水题从普及组刷起来吧。 NOIP普及Day1 T1: 这题摆明就是数学问题嘛。没什么好说的。 提高组一上来就是什么代数。 T2: 这套题也是暴力嘛。 情况和:9999*12*31<=400000 这不就是很简单了嘛。扫一次就可以了。 T3: 这题就用队列思想,很简单而已。直接扫一次。 T4: 贪心?题目没看完,题目看不全原创 2016-11-21 13:13:02 · 601 阅读 · 0 评论 -
[Dream Team邀请赛]----Money Henry拣钱
Henry拣钱(money.pas/c/cpp) 背景描述: 最近,Henry 由于失恋(被某大牛甩掉!)心情很是郁闷.所以,他去了大牛家,寻求 Michael 大 牛的帮助,让他尽快从失恋的痛苦中解脱出来.Michael 大牛知道 Henry 是很爱钱的,所以他 是费尽脑水,绞尽脑汁想出了一个有趣的游戏,帮助Henry….. 题目描述: Michael感觉自己原创 2016-11-14 21:00:52 · 789 阅读 · 0 评论 -
[Dream Team邀请赛]----Best 终极装备
终极装备(best.pas/c/cpp) 题目描述: 近日 DT中的 Henry和 Geer 两人沉迷于仙剑1 这款经典的游戏中(都怪 Michael,是他 把这个游戏推荐给他们的,才让他们如此沉迷,无心学习!不过这款游戏的确不错,想当 年 ……哦,对不起,扯远了,回正题) 。 Henry和 Geer 经过一段复杂的迷宫(游戏里的迷宫多得很,有不好走!苦了两位啊) ,原创 2016-11-14 21:06:14 · 753 阅读 · 0 评论 -
ACM模版库制作V3
经过3天努力,又多了很多新内容了,具体大家自己看吧。 链接: http://pan.baidu.com/s/1pLRLyGV 密码: h1ft原创 2016-11-11 13:23:11 · 509 阅读 · 0 评论 -
ACM模版库制作V2
两天持续整理,整理了很多 也偷懒了很多 但是竟然NOIP提高就要整理嘛。 基础整理都出来的 方便复习,记忆代码 Doc版本也出来了。。 学校机房好烂。。。卡死了。。 难看死了。。 给个Doc吧。 http://pan.baidu.com/s/1bo0jgez 这里不能上传文件,我就弄弄吧。。。 Doc好看很多的ACM模板目录一、 图论1.Spfa(1).最短路(原创 2016-11-08 13:19:44 · 651 阅读 · 0 评论 -
ACM模版库制作V1
这是小小得整理,虽然还没有弄完,但是还是有一个样子了~ 慢慢整理不用急ACM模板库目录一、图论1.Spfa(1).最短路(2).次短路 2.强连通 (1).出入度操作 3.并查集 (1).简单并查集 (2).功能并查集 (3).倒推并查集 4.网络流 (1).简单构图原创 2016-11-06 09:20:24 · 1163 阅读 · 3 评论 -
[SCOI2008]奖励关
提交传送门 倒推~倒推~倒推~ 状压+状压+状压。。。 垃圾Ljh的Lj题目 你们慢慢看 我改了很久的代码。。。。 Description 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关。在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃)。 宝物一共有n种,系统每次抛出这n种宝物的概率都相原创 2016-10-28 13:36:47 · 732 阅读 · 0 评论 -
[ZJOI2006]物流运输
咳咳。 貌似JBL说可以用最大流。不知怎么想得的。。 我的方法就是用Spfa+Dp这个是用Dp模拟路径SPfa求和。很简单的。大家意会意会 好久没写博客了,校运会 有时间给你们玩玩~ Description 物流公司要把一批货物从码头A运到码头B。由于货物量比较大,需要n天才能运完。货物运输过程中一般要转停好几个码头。物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管原创 2016-10-26 13:12:20 · 891 阅读 · 0 评论 -
一个好系统决定你的Code
你有一个好的系统吗?你有一个好的工作软件吗?这就是效率原创 2016-10-17 13:42:23 · 1027 阅读 · 4 评论 -
关于自己
我还是一名学生,但已经开始写博客了,是不是很神奇0.0 其实我博龄不止2年多了,以前总是搞些不正经得QaQ 学习这事可以放下,我学习过关于 C++ 和 PHP,Html,Js,Sql等多种语言 但只有C++和PHP可以搬上厅堂。 我还有一群小伙伴。 他们都和我一起学习,竞争。 我们在不停的学习只为寻找梦想。 寻找不断,有同样志向的同学加QQ:762670604 我们一起学习,一起进步原创 2016-08-25 00:05:42 · 886 阅读 · 0 评论 -
【业界偷懒】【Public】BZOJ题目一句话题解整理
转发【Hzwer】: 就当是复习一下自己做过的题,顺便提供一个简要题解给大家看. 做题时候实在想不出来看一下一句话题解,可以有一个提示的作用又不至于一下子知道了全部浪费了一道题吧.. 部分题目(如我A过得大部分奶牛题)是别人拿我的账号做的,不提供题解. 可能会漏掉很多做过的题..因为可能点页数不小心点错了什么的 UPD.本来想把那些没写过但是知道题解的也写了..但是写完这些已经累死转载 2016-09-30 13:36:19 · 1778 阅读 · 0 评论 -
[矩阵乘法]数列
嘿嘿嘿…….矩阵乘法!! https://yunpan.cn/cvxtdIUiCITNk 访问密码 38b3 细细~具体就是看PPT反正不是我写的~ OJ 【题目描述】 a[1]=a[2]=a[3]=1 a[x]=a[x-3]+a[x-1] (x>3) 求a数列的第n项对1000000007(10^9+7)取余的值。【输入格式】 第一行一个整数T,表示询问个数。原创 2016-10-12 13:52:08 · 1450 阅读 · 1 评论