摘要:
二分查找算法是一种常用的查找算法,也被称为折半查找。它可以在有序的数组或列表中快速查找需要的元素。 算法描述: 首先确定数组的中间位置mid=(left+right)/2; 然后将要查找的值key与中间位置的值进行比较; 如果key等于中间位置的值,则查找成功,返回mid; 如果key小于中间位置的 阅读全文
摘要:
AC自动机(Aho-Corasick algorithm)是一种多模式字符串匹配算法。它可以快速地查找多个模式串在一段文本串中出现的位置,并支持模式串的预处理,使得在查询时能够快速地匹配。 C++代码实现: #include <iostream> #include <queue> #include 阅读全文
摘要:
以下是强连通分量的C++代码实现以及过程讲解: 假设我们有一个有向图,我们需要找到它的所有强连通分量。 步骤1:首先,我们需要定义一个全局变量用于记录强连通分量的数量。我们可以称之为SCC_COUNT,并将其初始化为0。 int SCC_COUNT = 0; 步骤2:接下来,我们需要定义一个DFS函 阅读全文
摘要:
网络流是一种非常重要的图论算法,它在许多实际问题中得到广泛应用。本文将介绍网络流算法的C++代码实现与过程讲解。 算法概述 网络流算法是通过将图中的边看作流量通道,将图的点看作流量的起点或终点,来求解图中的最大或最小流量的问题。它是一种非常重要的最优化算法,广泛应用于图论、运筹学、计算机网络等领域。 阅读全文
摘要:
n个双端队列,操作1可以从队尾入队,相邻相同则消除队尾两个元素;操作2可以选择两个队头元素相同的队列,消除两个队头元素,m个范围在1~2n-1的元素进来,如果操作才能让最终所有队列为空? 阅读全文
摘要:
深搜记忆化超时,可以改倒搜、广搜、DP,以下是改广搜的代码:按照广度优先,我们可以控制k是一层一层搜索的,这样就可以用滚动数组,避免超空间。队列中只有两层的数据,一层至多24万种和,因为会重复入队,稍微开大一点队列,循环使用即可。 阅读全文
摘要:
以下是GDKOI2021普及组第二天四道题目的程序实现,包括中学生数学题、二叉树、我的世界、矩阵四道题目。 GDKOI2021普及组Day2A初中生数学题 题目大意:$1^{a_1} * 2^{a_2} * ... * 10^{a_{10}}$,结果从低位到高位的第一个非零位的值是多少? GDKOI 阅读全文
摘要:
字符串 KMP const int N=1000005; char s[N], t[N]; int len_s, len_t, nxt[N]; void GetNext(char *s) { for (int i=2, k=0; i<=len_s; i++) { while (k && s[i]!= 阅读全文
摘要:
对于一维的情况,只需要预处理每个位置需要多少步走出去即可。 走出去,要么不超过n步,要么超过n步。 不超过n,可以哈希,记录往左往右走x步的最小操作次数。 超过n,先让他不超过n,再用 之前的方法做即可。 对于二维,任意两个搭配,如果第一位步数是4,那么需要4步走出去,下一维(其他维)必须超过4步, 阅读全文
摘要:
n+1个柱子,前n个柱子m个球,最后一个空,n中颜色的球各m个,如何移动让颜色i回到柱子i? 要求:每根柱子不能超过m个球。 借助一根空柱子,我们可以将任何一个球移到任何一个位置。 如移到柱子1位置i,那么先把该球移到某根柱子顶端,再把柱子1上面的m-i+1个球搬走,就可以一过去了。 这样步数多,所 阅读全文