0%

这次这篇文章主要是讨论一个经典的问题和一个经典的算法,首先我们可以看到这个问题叫做RMQ问题,然后我们接下来讨论的这个算法就是用来解决这个经典的问题的,由Tarjan大牛发明创造的Sparse-Table算法.

RMQ问题

先来说说RMQ问题,RMQ问题的全称叫做范围最值问题(Range Minimum/Maximum Query),是指这样一个问题:对于长度为n的数列A,回答若干次询问RMQ(i,j),返回数列A中下标在区间[i,j]中的最小/大值。

阅读全文 »

这次这篇博客介绍的是ACM中一群非常有意思的题目,就是玩游戏。这种游戏题基本都使用了博弈论的知识,今天我们就来浅谈一下博弈论。

阅读全文 »

这次这道题目还是关于扩展欧几里得的题目,如果对扩展欧几里得算法不熟悉的话可以看我前面的文章。

题目传送门

https://vjudge.net/problem/UVA-12169

题意

题意就是有一个公式x[i]=(a*x[i-1]+b) mod 10001,给你一半的数组,x[1],x[3],x[5]等等,你要通过这些数字算出正确的另一半的数组。

阅读全文 »

斐波那契数是很多人众所周知的了,那么如果叫你算18446744073709551615×18446744073709551615 mod 1000的斐波那契数,你是否有快速的方法进行计算呢,这就是我们今天要讨论的问题,首先让我们来看题目吧

题目传送门

https://vjudge.net/problem/UVA-11582

题意

题意非常简单,就是给你一个a,b,n,让你算出斐波那契数列的第a^b项,然后该项的数值对n取模,输出即可。只不过a和b的范围都非常大,达到了2^64。

阅读全文 »

这一篇文章的主角就是大名鼎鼎的数学家欧几里得。很多刚了解一些数论的ACMer都会接触到辗转相除法,其实这就叫做欧几里得算法,但是这并不会是我们今天所讲的内容,我们今天讲的算法叫做扩展欧几里得。

阅读全文 »

今天这一篇是关于数论的知识,首先来写写素数筛

在有一些题目里,我们想快速分辨哪些数是素数,哪些数不是素数,我们有非常急切的渴望想建立一张素数表以便于我们查询哪些是素数那些不是,所以我们就有了这么一个算法——素数筛。

阅读全文 »

终于到了激动人心的DP问题,今天我们先来介绍一些简单的DP,首先我们需要向没有接触过这个东西的同学(说明你们脑细胞还没有大面积死亡啊哈哈)科普一下。

阅读全文 »