
常用基本算法
文章平均质量分 73
DASEason
https://github.com/qq547276542
展开
-
Hash
const int hashsize = 1000003;const int maxstate = 1000000;typedef int State;int head[hashsize],Next[maxstate];State st[maxstate];//需要定义一个状态数组int id=0;//状态数组的下标,访问状态void init(){memset(head,0,size原创 2015-08-19 16:55:03 · 1909 阅读 · 0 评论 -
树状数组
const int maxn=10010; //树状数组可能的最大长度struct BIT { //设树状数组为A[],下标从1开始 int N; int C[maxn]; //辅助数组 void init(int BIT_size) { //初始化,BIT_size 为树状数组的长度 N=BIT_size; memset(C,0,s原创 2015-08-19 17:03:41 · 1859 阅读 · 0 评论 -
2-SAT 模板
在实际问题中,2-SAT问题在大多数时候表现成以下形式:有N对物品,每对物品中必须选取一个,也只能选取一个,并且它们之间存在某些限制关系(如某两个物品不能都选,某两个物品不能都不选,某两个物品必须且只能选一个,某个物品必选)等,这时,可以将每对物品当成一个布尔值(选取第一个物品相当于0,选取第二个相当于1),如果所有的限制关系最多只对两个物品进行限制,则它们都可以转化成9种基本限制关系,从而转化为原创 2015-10-10 10:36:29 · 754 阅读 · 0 评论 -
插值与拟合简介
插值与拟合简介1.插值方法1.1 拉格朗日(Lagrange)多项式插值 最基本,求一个至多n次多项式φn(x)=a0+a1x+...+anxn\varphi_n(x)=a_0+a_1x+...+a_nx^n,使其在给定点处与f(x)同值,即满足插值条件φn(xi)=f(xi)=yi(i=0,1,…,n)\varphi_n(x_i)=f(x_i)=y_i \quad(i=0,1,…,n)。原创 2017-09-01 15:35:24 · 14193 阅读 · 2 评论 -
从牛顿法到L-BFGS的算法演变
前言(本文主要学习自该博主的文章:http://blog.youkuaiyun.com/itplus,以下是本人的笔记,主要记录了结论部分,省略了推导的部分。对具体推导过程有兴趣的同学请访问原博主的博客~) 拟牛顿法是求解非线性优化问题最有效的方法之一,其中DFP方法,BFGS方法以及L-BFGS方法都是重要的拟牛顿法。我们现在考虑如下无约束的极小化问题: >minxf(x),其中x=(x1,x2原创 2017-09-10 09:12:22 · 4362 阅读 · 0 评论 -
灰色预测模型GM(1,1) 与例题分析
灰色预测模型灰色预测的概念(1)灰色系统、白色系统和黑色系统白色系统是指一个系统的内部特征是完全已知的,既系统信息是完全充分的。黑色系统是一个系统的内部信息对外界来说是一无所知的,只能通过它与外界的联系来加以观测研究。灰色系统介于白色和黑色之间,灰色系统内的一部分信息是已知的,另一部分信息是未知的,系统内各因素间有不确定的关系。(2)灰色预测法灰色预测法是一种预测灰色系统的预测方法。灰色原创 2017-09-06 13:39:28 · 339356 阅读 · 49 评论 -
模拟退火算法(c++实现)
模拟退火算法算法简介 模拟退火算法得益于材料的统计力学的研究成果。统计力学表明材料中粒子的不同结构对应于粒子的不同能量水平。在高温条件下,粒子的能量较高,可以自由运动和重新排列。在低温条件下,粒子能量较低。如果从高温开始,非常缓慢地降温(这个过程被称为退火),粒子就可以在每个温度下达到热平衡。当系统完全被冷却时,最终形成处于低能状态的晶体。 假定我们要解决的问题是一个寻找最小值的优化问题。将物理原创 2017-09-02 13:46:47 · 18784 阅读 · 4 评论 -
遗传算法解决TSP问题(c++实现)
遗传算法遗传算法简介 遗传算法(Genetic Algorithms,简称 GA)是一种基于自然选择原理和自然遗传机制的搜索(寻优)算法,它是模拟自然界中的生命进化机制,在人工系统中实现特定目标的优化。遗传算法的实质是通过群体搜索技术,根据适者生存的原则逐代进化,最终得到最优解或准最优解。它必须做以下操作:初始群体的产生、求每一个体的适应度、根据适者生存的原则选择优良个体、被选出的优良个体两两配对原创 2017-09-02 22:25:45 · 25548 阅读 · 7 评论 -
java使用poi读取excel数据(xlsx)
首先要下载poi的jar包:下载地址之后在项目中需要把poi下载目录里的所有jar包导入。然后我自己封装了一个xlsx读取类,输入文件地址,要获取的列。输出二维数组,第一维代表一行数据,第二维代表每一行的单元格数据。import java.io.File;import java.io.FileInputStream;import java.io.IOException;impor原创 2017-07-15 18:33:41 · 35946 阅读 · 3 评论 -
topo排序(邻接表) 判断topo序列是否存在,是否唯一,以及输出序列
const int maxn=1e3+7;struct Topo { int indeg[maxn],n; vector G[maxn],path; void init(int n) { this->n=n; for(int i=0; i<=n; i++) G[i].clear(); memset(i原创 2017-03-07 22:22:27 · 2294 阅读 · 0 评论 -
高斯消元(求解double,int型方程组)
#include#include#include#include#include#includeusing namespace std;const int maxn=507;const double eps=1e-7;double A[2*maxn][maxn]; //增广矩阵double x[maxn]; //解集//equ: 方程个数 var:变元个数int Ga原创 2017-03-09 20:08:50 · 1859 阅读 · 0 评论 -
Manacher算法求回文子串
#include #include #include #include #include #include #include #include #include using namespace std;const int maxn=300007;char str[maxn];int p[maxn=0;--i){ s[i+i+2]=s[i];原创 2015-10-04 13:01:18 · 1897 阅读 · 0 评论 -
矩阵快速幂
#define LL long longint mod = 1000000007;int n; //矩阵宽度const int maxn=100; //maxn不要超过160struct Mat //矩阵结构体{ LL mat[maxn][maxn];};Mat operator * (Mat a, Mat b) //2个边长为n的正方形矩阵乘法 a*b mod p原创 2015-08-20 10:27:14 · 1813 阅读 · 0 评论 -
并查集
const int maxn=1e5+7;int ufs[maxn];int Find(int x) { if(ufs[x]<0) return x; return ufs[x]=Find(ufs[x]); //查找根的同时进行路径压缩}void init() { memset(ufs,-1,sizeof(ufs));} void U(int a, int原创 2015-10-10 10:33:04 · 1861 阅读 · 0 评论 -
树的最小表示
string min_pre(string str){ //原串中为树的dfs路线,0代表进入子树,1代表返回父节点 vector box; string ret = ""; int equal = 0, st = 0; for(int i = 0; i < str.size(); i++){ if(str[i] == '0原创 2015-10-04 12:20:09 · 868 阅读 · 0 评论 -
Lucas大组合数模板
typedef long long ll;struct Lucas { ll n, m, p; ll qPow (ll a, ll k) { ll ans = 1; while (k) { if (k&1) ans = (ans * a) % p; a = (a * a) % p; k /= 2; } return ans; } ll C (ll a, ll b) { if (a a - b)原创 2015-08-20 10:32:11 · 1660 阅读 · 0 评论 -
近端梯度法(Proximal Gradient Method, PG)
近端梯度法(Proximal Gradient Method ,PG)算法简介 近端梯度法是一种特殊的梯度下降方法,主要用于求解目标函数不可微的最优化问题。如果目标函数在某些点是不可微的,那么该点的梯度无法求解,传统的梯度下降法也就无法使用。PG算法的思想是,使用临近算子作为近似梯度,进行梯度下降。概念定义临近算子(proximity operator)proxf(x)=argminy∈Rnf(y原创 2017-10-16 17:10:21 · 32394 阅读 · 1 评论