- 博客(16)
- 资源 (4)
- 收藏
- 关注
原创 可持久化线段树(主席树)
摘要主席树,又称可持久化线段树,属于可持久化数据结构。“主席”这一名词是由于发明者缩写为HJT,和某位主席拼音缩写相同(有些牵强),故将该数据结构称为主席树。主席树既保留了线段树的灵活,也拥有了可持久化数据结构的特点,在处理某些特定问题时有着其它数据结构不具有的优势。本文将首先介绍什么是“可持久化数据结构”,随后介绍主席树的思想,关于代码实现将结合例题讲解。可持久化数据结构可持久数据结构...
2019-08-29 20:23:12 3400
原创 2019-CCPC网络赛部分题解
1001 &题意简述:给定正整数a和b,找到一个最小的正整数c,使得(ac)&(bc)最小。解题思路:两个数按位与最小结果肯定是0啊,所以对于a和b,如果它们对应二进制位上有0,则c置为0即可,因为0^0 = 0 , 这就保证了异或之后肯定有一个是0,再&之后还是0;若它们对应二进制位都是1,则只能置c的对应二进制位为1了,因为1^1 = 0。值得注意的是,所求结...
2019-08-25 20:19:58 1976 2
原创 强连通分量
摘要强连通分量常用于缩点,是图论中一个重要的知识点。本文首先介绍了强连通分量的相关定义以及其应用范围,然后将着重介绍两种求强连通分量的算法:Kosaraju算法以及Tarjan算法,它们的时间复杂度都是O(n+m)(n:顶点数,m:边数)。其中Kosaraju算法思想简单,操作方便,易于理解与代码实现,但是性能以及拓展性上比Tarjan略逊一筹;本文将会逐一介绍这两种算法的思想以及实现步骤,最...
2019-08-24 15:55:17 8225
原创 降雷皇(最长上升子序列数量)解题报告
测试地址题意简述哈蒙有n条导线排成一排,每条导线有一个电阻值,神奇的电光只能从一根导线传到电阻比它大的上面,而且必须从左边向右传导,当然导线不必是连续的。哈蒙想知道电光最多能通过多少条导线,还想知道这样的方案有多少。解题思路第一问就是简单的LIS问题,即询问最长上升子序列的长度。第二问是询问最长上升子序列的数量,如果用暴力做法,只需要多开一个数组记录数量即可,时间复杂度O(N^2);实际...
2019-08-24 15:54:40 412
原创 HDU6681 Rikka with Cake
测试地址题意简述直接看样例其实就明白了,看图说话,就是给出一个左下角坐标为(0,0),右上角为(n,m)的矩形;然后有k条线段,这些线段不重叠,都是从矩形内某一点出发到矩形某一边为止,这些线段共四种,都与坐标轴平行。请问这些线段将矩形分为了几个不连通的面?(图一是3个,图二是5个)解题思路首先考虑到任意两条直线的x,y坐标都是不同的,所以不会出现重叠现象。观察得,肯定是相交的线段才能分...
2019-08-20 21:17:15 217
原创 差分约束系统
算法简介差分约束系统是一种特殊的N元一次不等式组,它包含N个变量X1−XNX_1 - X_NX1−XN以及M个约束条件,每个约束条件都是由两个变量作差构成的,形如Xi−Xj<=CkX_i - X_j <= C_kXi−Xj<=Ck,其中CkC_kCk是常数(可以为负),1<= i , j <= N, 1 <= k <= M。我...
2019-08-14 17:36:30 144
原创 二维st表
摘要我们知道一维的st表在经过预处理后可以在O(1)时间内查询任意区间的极值,虽然其是离线算法,但胜在代码短小易写。而在二维RMQ(区间最值查询)问题中,我们依然可以采用st算法解决问题,只不过我们需要从一维拓展到二维,当然适用范围依然是离线。二维st表仍然是用倍增思想,如果理解了一维的st表,那么对于二维的也不难理解。问题描述给定一个n* n的矩阵以及一个整数b和k,共有k次询问,每次询问...
2019-08-04 16:39:28 3309
原创 倍增求LCA
LCA:即求一棵有根树中两个节点的最近公共祖先。树上倍增法树上倍增法是一个很重要的算法。除了求LCA外,在很多问题中都有广泛应用。设F[x,k]表示x的2k倍祖先,即从x向根节点走2k步到达的节点。特别的,若该节点不存在,则令F[x,k] = 0。F[x,0]就是x的父节点,除此之外,对于任意的1 <= k <= log n,F[x,k] = F[F[x,k-1],k-1]。这就...
2019-08-04 16:37:56 169
原创 1006 Fansblog解题报告
1006 Fansblog题意简述:给定一个大素数P,请找出它的前一个素数Q,并求出Q! mod P的值,其中1e9 <P,Q< 1e14。解题思路:首先我们需要快速的找出素数Q,当然这么大的范围线性筛是肯定解决不了的,O(N)O(\sqrt{N})O(N) 也是解决不了的,因此我们得采用Miller-Rabin素性测试 算法。该算法是O(klog3Q)O(klog^3Q)...
2019-08-04 16:37:36 143
原创 高度数组与最长公共前缀
摘要本文是关于后缀数组的一个拓展,问题模型来自于最长公共前缀(Longest Common Prefix Array)问题,我们为解决该模型,在后缀数组的基础上设计了一个精巧的数组——高度数组,同时由于该数组在处理各类字符串相关问题时有着较好的用途,因此值得掌握。本文将直接从高度数组讲起,假设读者具有后缀数组的基础知识。首先本文会介绍高度数组的定义以及用途,接着讲解如何在O(N)时间内求出高度...
2019-08-04 16:36:50 286
原创 后缀数组的计算
什么是后缀数组字符串后缀(Suffix)指的是从字符串的某个位置开始到其末尾的字符串子串。我们认为原串和空串也是后缀。反之,从字符串开头到某个位置的字符串子串则称为前缀。后缀数组(Suffix Array)指的是将某个字符串的所有后缀按字典序排序后得到的数组。不过数组中并不需要直接保存所有的后缀字符串,只要记录对应的起始位置就好了。后缀数组的计算假设我们要计算长度为n的字符串S的后缀数组。...
2019-08-04 16:36:04 462
原创 2019矿大icpc夏令营day1-贪心算法
贪心算法编程实验总结今天的贪心算法,主要介绍了三类经典的贪心问题:背包问题任务调度问题区间调度问题在解决上述三种类型的问题时,首要解决的是如何选取局部最优解,即如何才能使得局部最优解推出全局最优解。类似于动态规划中的阶段划分、状态选取以及最重要的设计状态转移方程,贪心算法中也要划分阶段以及设计合理的贪心策略 。背包问题ZOJ2109 FatMouse’ Trade解题思路:...
2019-08-04 16:35:30 302
原创 2019矿大icpc夏令营Day2-动态规划
动态规划方法的编程实验本次课程主要介绍了动态规划中的阶段、状态、决策、决策的指导思想。动态规划中需要重点理解的知识点有:阶段与状态、决策与允许决策的集合、状态转移和最优化概念。在此基础上,动态规划的一些经典模型也是需要掌握的,今天练习了如下模型:子集和问题最长公共子序列问题背包问题在实际问题中,状态与阶段往往是不同的,需要具体问题具体分析;同样的,同一个问题模型也可以有几种不同的阶...
2019-08-04 16:34:42 183
原创 2019矿大icpc夏令营Day3-数论
数论的编程实验之前曾好几次学过数论,但是其中各种证明方法以及理论仍然是转眼间就忘。借着这次机会,要把模板以及常用的定理以及推论给掌握。今天讲的高斯素数、梅森素数都是第一次听说,回头要重新写一篇笔记详细学习一下。还有将正整数快速分解成质因数的Pollard_rho算法还没有掌握,也要写一篇笔记学习并整理。求解不定方程和同余方程计算最大公约数和不定方程计算同余方程和同余方程组计算多项式同余...
2019-08-04 16:34:07 319
原创 2019矿大icpc夏令营Day4-求解Ad Hoc类问题
求解AD Hoc类问题的编程实验(拉丁语)Ad Hoc:为某种目的而特别设计的。在程序设计竞赛的试题中,有这样一类试题,解题不能套用现成的算法,也没有模式化的求解方法,而是需要编程者自己设计算法来解答试题,这类试题被称作Ad Hoc类试题,也被称为杂题。实现的程序一般比较简短。求解Ad Hoc类问题的两类方法:机理分析法:采用顺向思维,从分析机理内部出发顺推算法。统计分析法:采用逆向思...
2019-08-04 16:33:32 281
原创 POJ1042 Gone Fishing & POJ3069 Saruman's Army题解
POJ 1042 Gone Fishing题意简述:给定鱼塘个数、钓鱼时间,以及每个鱼塘内单位时间内能钓到的鱼的数量和时间的关系,以及从一个池塘到另一个池塘的花费时间。请给出一个最优策略,使得能钓到最多的鱼,且尽量在靠前的鱼塘花费更多的时间。(更多细节请看原题面)解题思路:本题采用贪心策略。如果我们在前k个池塘钓鱼,那么由于路上花费时间确定,那么就相当于剩下的时间我们就可以自由分配在前k个...
2019-08-04 16:33:03 273
哈夫曼编码译码器-数据结构实训
2019-01-13
算法导论 PDF
2018-08-21
教职工信息管理系统-结课作业C++
2018-06-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人