随笔~算法分析
ccq1n
TongjiU 2022级大三
展开
-
最长上升子序列nlogn算法
这题目是经典的DP题目,也可叫作LIS(Longest Increasing Subsequence)最长上升子序列 或者 最长不下降子序列。很基础的题目,有两种算法,复杂度分别为O(n*logn)和O(n^2) 。转载 2016-01-29 11:50:03 · 1511 阅读 · 0 评论 -
模板 大数的斐波那契额数列(可以用来求大数加法)
大数斐波那契数列模板#include using namespace std;static int digit = 1; //数字的位数class Node{public: Node() { for(int i = 0;i < 500;i++) { value[i] = 0; }原创 2016-05-14 17:59:54 · 1224 阅读 · 0 评论 -
取石子-博弈论
有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。(一)巴什博弈(Bash Game,同余理论):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。原创 2016-05-11 13:45:30 · 448 阅读 · 0 评论 -
O(n)的回文子串Manacher算法
O(n)的回文子串Manacher算法原创 2016-04-10 14:21:17 · 344 阅读 · 0 评论 -
匈牙利算法
匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名。匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。-------等等,看得头大?那么请看下面的版本:通过数代人的努力,你终于赶上了剩男剩女的大潮,假设你是一位光荣的新世纪媒人,在你的手上有N个剩男,M个剩女,原创 2016-04-25 17:09:30 · 3860 阅读 · 0 评论 -
算法--尺取法
尺取法通常是指对数组保存一对下标(起点,终点),然后根据实际情况交替推进两个端点直到得出答案的方法,这种操作很像是尺取虫爬行的方式故得名。原创 2016-03-10 11:00:25 · 735 阅读 · 0 评论 -
同余模定理
同余模定理原创 2016-03-07 20:18:08 · 7096 阅读 · 1 评论 -
欧拉函数
对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。例如euler(8)=4,因为1,3,5,7均和8互质。 Euler函数表达通式:euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn),其中p1,p2……pn为x的所有素因数,x是不为0的整数。euler(1)=1(唯一和1互质的数就是1本身)。 欧拉公式的延伸:一个数的所有质因子之和是euler(n)*n/2。 那么如何变成实现欧拉函数呢?下面通过两种不同的方法来实原创 2016-03-18 17:56:46 · 316 阅读 · 0 评论 -
栈和队列基本函数
使用标准库的栈和队列时,先包含相关的头文件#include<stack>#include<queue>定义栈如下:stack<int> stk;定义队列如下:queue<int> q;栈提供了如下的操作原创 2016-03-16 22:03:02 · 5821 阅读 · 0 评论 -
STL vector用法介绍
介绍这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。 Vector总览vector是C++标准模板库中的部分内容,它是一个多功能原创 2016-04-21 20:49:06 · 1404 阅读 · 0 评论