摘要: 给你一个数列A,要支持两个操作: 1.第x个数加v 2.求x到y这个区间的和 不要用树状数组做,用线段树。 线段树比树状数组看起来美观一点,它长这样。 它有两种存储方式: 1.动态存储,使用指针,struct 2.静态存储,直接用数组,下表遵循左儿子乘2,右儿子乘2加1的规则。 特别提醒:用Cena 阅读全文
posted @ 2018-08-09 20:33 GTBA 阅读(147) 评论(0) 推荐(0) 编辑
摘要: KMP算法,对于求b串在a串中出现的次数。 在学习KMP之前,希望大家充分掌握hash。 HASH: 1.hash表:用来离散化(hash数组,hash链表) 2.Rabin-Kap算法: 可替代KMP(O(n)),Manacher(O(n))等; hs[t]=hs[t-1]*p+s[t]; has 阅读全文
posted @ 2018-08-09 20:30 GTBA 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 线段树和树状数组在noip中本人觉得挺重要的,而且比较难写。 我们先来看树状数组。 look at 这个图 那么我们会发现一个有趣的性质。 设节点编号为n,那么这个节点管辖的区间为2k(其中k为n二进制末尾0的个数)个元素。 这个区间最后一个元素必然为An。 所以:Cn=A(n-2k+1)+...A 阅读全文
posted @ 2018-08-09 20:21 GTBA 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 按老师说的,他第一次见到可持久化数据结构的时候,觉得它很神奇(其实只是没见过世面而已)。 主席树,这个名字是怎么来的呢? 原因,学长是这样说的:因为发明这种数据结构的大佬名字缩写和hjt主席一样,于是,便叫主席树。 下面进入正文: 主席树,又称函数式线段树、可持久化线段树。 传说是一位大神没学会划分 阅读全文
posted @ 2018-08-09 20:16 GTBA 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 虽然noip不会重点考这个但是为了防止不必要的丢分还是准备一下比较好。 高精度的原理就是我们小学的时候所使用的竖式运算。 所以以字符串的形式模拟一下运算过程结果就出来了。 以上为封装好的高精度。 请各位大爷尽情享用。 一世安宁 阅读全文
posted @ 2018-08-09 20:11 GTBA 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 很喜欢博弈论的题!才不是因为它代码短 那么我们接下来就来看一下博弈论及其算法实现 大家在日常生活中应该都接触过五子棋,它其实也有先手有必赢策略的游戏,有人也会说我就算先手我也会输啊~ 所以,博弈论问题都有一个前提,那就是参与者都够聪明(没有歧义昂) 一.巴什博弈(bash game) 有一堆物品,包 阅读全文
posted @ 2018-08-09 20:08 GTBA 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 听说过动态规划(DP)的同学应该都知道有背包问题的存在。 首先我们来了解一下动态规划 基本思想: 动态规划算法通常用于求解具有某种最优性质的问题。 在这类问题中, 可能会有很多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。 动规划算法与分治法类似,其基本思想也是将待求解问题分解为若干个 阅读全文
posted @ 2018-08-09 20:07 GTBA 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 关于最短路,大家应该都知道有Dijkstra,SPFA以及Floyd。 此处先提出一个问题: 给定图G,每条边有边权。求从一点到另一点的边权和最小的路径。要求图中不能有负回路(否则为NP问题)。 首先提到的便是Floyd。 如果数据范围足够小,相信大家大部分会选择Floyd(为什么呢,后文解释)。 阅读全文
posted @ 2018-08-09 20:03 GTBA 阅读(257) 评论(0) 推荐(0) 编辑
摘要: DFS(深度优先搜索) 为无向图 DFS的过程类似于树的先序遍历。 请看图: DFS此图的过程为: 1.首先任意找一个未被便利过的顶点,例如从V1开始,由于率先访问了它,所以需要标记V1即已经访问过。 2.然后遍历V1的邻接点,例如访问V2,并做标记,之后访问V2,V4,V8,然后V5。 3.当继续 阅读全文
posted @ 2018-08-09 20:01 GTBA 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 费马小定理 假设p是质数,且gcd(a,p)=1,那么a(p-1)≡1(mod p)。假设a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a的(p-1)次方除以p的余数恒等于1.a^(p-1)%p=1(其中%为取模操作,且a<p,p为质数) 欧几里得算法 1.带余除法定理:a,b,其 阅读全文
posted @ 2018-08-09 19:54 GTBA 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 之前学Tarjan的时候一直理解不是很到位,温故而知新,查缺补漏一下。 Tarjan算法是用于求解有向图强连通分量的算法,它能做到线性时间的复杂度。 定义: 1.如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected)。 2.如果有向图G的每两个顶点都强连通,称G是一个强 阅读全文
posted @ 2018-08-09 19:50 GTBA 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 由一个题引入: 求一个串A的最长回文串: A=abababa最长回文串长度:5(ababa) 先思考用hash怎么做? 一、暴力 枚举左端,右端点(确定一个区间),线性扫一遍当前区间。 Ans=max(ans); 时间复杂度:O(n^3) 貌似也有O(n^2)的暴力,在此不再赘述。二、哈希 分设两个 阅读全文
posted @ 2018-08-09 19:47 GTBA 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 嗯,,,,自动AC机 在cena评测时: 在lemon评测时: 这是利用评测系统的bug来实现的。 这个东西可以在平时的时候玩一玩,但考试的时候还是要凭借真材实料。 一世安宁 阅读全文
posted @ 2018-08-09 19:46 GTBA 阅读(277) 评论(0) 推荐(1) 编辑