自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 三分法

三分法模版while(l<r){ ll mid1 = l + (r - l)/3; ll mid2 = r- (r - l)/3; if(check(mid1)>check(mid2))r=mid2-1; else l=mid1+1;}

2021-05-09 12:10:18 134 1

原创 相空间

相空间相空间是一个用以表示出一系统所有可能状态的空间;系统每个可能的状态都有一相对应的相空间的点。一个随时间演化的系统,我们可以描述出它的运动轨迹, 以及它在运动轨迹上任一点的速度, 这样它的演化过程就被完全描述. 所以, 我们可以用它在每个时刻的位置和速度(动量)来描述它在任一时刻的状态。假定有一个在三维空间中运动的粒子, 它在任意一个时刻都有三个坐标 x , y, z以及三个动量 p...

2019-11-09 11:14:17 3574

原创 混沌神经网络(Chaos Neural Network)

基本概念吸引子:系统有朝着某个稳态发展的趋势,这个稳态就叫做吸引子。吸引子又分为平庸吸引子和奇异吸引子。平庸吸引子:有不动点(平衡)、极限环(周期运动)和整数维环面(概周期运动)三种模式。(不动点:函数术语。函数经过有限次迭代回到相同的值的点为周期点,不动点是周期值为1的点。)奇异吸引子:反应混沌系统运动特征的产物,是一种混沌系统中无需稳态的运动形态。奇异吸引子上的运动对初始值有着极强...

2019-10-31 16:20:10 9866

原创 最优化算法-模拟退火(SA)

最优化问题最优化问题,就是在解决问题的过程中,挑选最好的一种决策全局最优针对一定条件/环境下的一个问题/目标,若一项决策和所有解决该问题的决策相比是最优的,就可以被称为全局最优。我们可以定义:在无限制环境集合R内,假设限制条件/环境为集合D(D包含于R),问题代价或目标函数为f(x),其中x指决策,那么全局最优就是指决策满足:或者针对一定条件/环境下的一个问题/目标,若一项...

2019-10-31 15:13:01 1256

原创 快速幂

快速幂是一种用来快速计算 a^n(mod m)的方法,是一种log(n)的方法一般快速幂ll qpow(ll a,ll n){ ll temp=1; while(n) { if(n&1) temp=(temp*a)%mod; a=(a*a)%mod; n=n>>1...

2019-09-02 15:29:30 155

原创 trie树及其优化

trie树,即字典树,是一种基于多字符串匹配的数据结构,该结构由根开始向下走到底,其中由跟到叶节点的一条路径组成了一个字符串。其匹配的是到目标字符ch2位置,从ch2之前的某个字符ch1开始ch1....ch2为一种目标字符串。//主要代码包含4部分,trie node部分 初始化和删除部分 插入 寻找struct Node{ char* val; Node *next[...

2019-09-02 15:29:24 461

原创

图的表示链式前向星:struct edge{ int to; int w; int next; edge(){} edge(int a,int b,int c){to=a;w=b;next=c;}};struct Map{ int cnt; int head[maxn]; edge e[maxn<<1]; ...

2019-09-02 15:29:16 116

原创 网络流

最大流:最大流是网络流的一种,他表示从起始点s出发,引出无穷的流量,每条边上允许通过一个最大的流量,求最终能够到达目的地的最大流量是多少。由于还是在图上进行操作,因此最大流的求解方法依然是基于dfs或者bfs的做法。故网络流比较耗费时间,常常所需要的点数不能够过大,大概在1k左右。最大流的一般方法:1.Ford_Fulkerson算法从源点s开始,不断进行dfs遍历,寻找到一条...

2019-09-02 15:29:06 126

原创 MST(最小代价生成树)

生成树,即对图的dfs过程中,我们会得到一棵生成树,在所有不同的生成树中,会存在一些边上权值和最小的树,我们叫其最小代价生成树。最小代价生成树常见算法有两种prim (点少)bool vis[maxn];int cost[maxn];int prim(int u){ memset(vis,0,sizeof(vis)); for(int i=0;i<=n;...

2019-09-02 15:28:57 605

原创 回文串/回文序列

回文串即,一个串反过来读也是他本身的串就叫做回文串。回文串的判定:bool isPalindrome(char *s){ int len=strlen(s); int l=0; int r=len-1; while(l<r) //相等不用判定 { if(s[l]==s[r]) l++,r--; ...

2019-09-02 15:28:40 256

原创 最大独立数

最大独立数即在二分图匹配中,选取最多的点,使任意所选两点均不相连。我们可以看到,为了选取最多的点让任意两点都不相连,即在选取最大的匹配数基础上尽量多的选取不连接的点。不妨设点数的总数为n,最大的匹配数必然是二分图中两两匹配,设为2m。则剩下的没有匹配的点数为n-2m,这n-2m个点,很容易证明这n个点之间两两不相互连接,因为如果有连接,则可以将其选取为匹配。故在已经匹配的二分图中,...

2019-09-02 15:28:21 366

原创 匈牙利算法-最小点覆盖

点覆盖的概念定义:对于图G=(V,E)中的一个点覆盖是一个集合S⊆V使得每一条边至少有一个端点在S中。即存在这样一个集合s,集合中的点组成的行或者列的直线能够将目标点全部包含在s中。最小点覆盖,即利用最少的行与列组成的直线数,使得目标点都包含在这些直线里面。例如上图,最小值为2。可以证明:最小点覆盖与二分图最大匹配数是共轭问题。即该问题可以用匈牙利算法计算最大匹配数。二...

2019-09-02 15:28:15 426

原创 子序列问题

1.上升子序列对数。HDU - 4991给定一个长度n的序列a,求出其中长度为m的有序子序列对数,mod上123456789。(1<= n<=10000 ,1<=m<=100)因为在处理第i个数的时候,得到了之前i之前长度为1-m的长度,因此很容易想到用动态规划来处理该问题。思想来源:子序列有长度要求,并且是递增的,因此每往序列后添加一个字就会使得结果增加...

2019-09-02 15:27:58 186

原创 数的分解

我们常常会对自然数进行分解,求取不同分解的组合数目或者对分解出的序列进行一系列操作。各种分解方法中的k数出现次数:HDU - 46024 = 1 + 1 + 1 + 1 4 = 1 + 1 + 2 4 = 1 + 2 + 1 4 = 2 + 1 + 14 = 1 + 3 4 = 2 + 2...

2019-09-02 15:27:49 1210

原创 树上分治

在树上进行分治的时候常常会选取一个点,通过该点将树分隔成为多个分支,在多个分支中进行分治,最终回到该点上处理各个分治之间的关系。分治的关键步骤大概是:选点,分治,合并。选点:树上分治的关键在于,通过分治可以将树编程许多小的分支,从而化简时间复杂度,然而为了使平均时间最小,我们通常会对每一个子树进行预处理,获取该树的重心位置,从而已该点为划分,将树分成各个小的子模块。树的重心:htt...

2019-09-02 15:27:00 170

原创 状态压缩dp

我们需要对一个集合进行处理,并且可能情况是这个集合的所有全排列情况,这个时候,我们就需要想到用状态压缩进行处理。dp方式:状态压缩中的dp我们常常采用dfs的方式,这里的dfs指的是当前状态可以由哪些状态变化而来,利用这种方式进行dp状态表示:我们通常用二进制0,1组成的序列表示一个状态,每个状态中的0,1都表示成一个元素是否在该状态中。状态个数:对于一个由n个元素组成的状态来说,他的...

2019-09-02 15:26:51 131

原创 并查集

并查集(Union/Find)主要涉及两种基本操作:合并和查找。基本操作位合并之后,为查找某两个元素是否已经处在同一个集合中,需要Find操作。我们可以将并查集的元素看成是一个树,也可以看成是一个集合int mset[maxn];//初始化void init(){ for(int i=0;i<=15000;i++)mset[i]=i;}//find函数...

2019-09-02 15:26:42 123

原创 最短路

图论中的经典问题,由一个点到另外一个点所经过的最短路径是多少。BFS对于每个边都相同的,可以统计从初始点到目标点经过的路径数量。直接使用BFS即可int dis[maxn];queue<int> que;vector<int> e[maxn];void bfs(){ while(!que.empty())que.pop(); for...

2019-09-02 15:23:55 135

原创 树链割分原理和实现

树链割分即将树分割成为一段一段的线段区间,具体分割的过程就是一个dfs的过程,然后就可以将树结构划分为数组结构,从而实现树上的区间操作,即用线段树或者树状数组处理。首先就是一些必须知道的概念:重结点:子树结点数目最多的结点; 轻节点:父亲节点中除了重结点以外的结点; 重边:父亲结点和重结点连成的边; 轻边:父亲节点和轻节点连成的边; 重链:由多条重边连接而成的路径; 轻链:由多条...

2019-09-02 15:23:47 130

原创 tarjan 连通性

tarjan处理强连通分量利用tarjan处理,处理过程中每次遇到 dfn[rt]==low[rt],即为一个强连通块。获取color数组。每个不同的color即表示该点属于第几个强连通分量。vector<int> vec[maxn];int tot;int dfn[maxn],low[maxn];bool vis[maxn];int color[maxn],cn...

2019-09-02 15:23:36 125

原创 逆序对问题

逆序对是什么,对于一个序列a1,a2,a3.....an来说,,,满足a[ i ]>a[ j ]并且i < j的数对(i,j)就叫做逆序对。一些性质:1.对于一个逆序对为k的序列来说,要将这个序列排序成为完全没有逆序对的序列,即任意两个元素之间都满足比较关系,则至少需要交换相邻序对的次数为序列的逆序对数k,并且一定存在一个k次交换相邻元素的算法。2.对于一个元素全部相同的序...

2019-09-02 15:23:26 234

原创 kmp及扩展kmp

kmpkmp匹配主要匹配的是两个字符串,我们将需要匹配的记录为s1,用于匹配的串为s2.kmp匹配的是从以当前s1中的ch字符为末尾的字符串能够在s2中匹配的最大前缀的长度。也即是s1中的每个前缀的最长后缀所匹配的s2的最长前缀。先考虑自身与自身匹配的情况:如果用dp+数学归纳来思考:假设当前需要匹配j位置的字符,从0—j-1位置都已经记录了该位置能够匹配到的自身字符...

2019-08-27 21:00:03 164

原创 图论

1.floyed求环int n;int ans;ll a[maxn];ll g[maxm][maxm],dist[maxm][maxm];int main(){ for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) g[i][j]=inf; for(int i=1;i<=...

2019-08-19 21:16:53 83

原创 LCA

1.倍增法求LCAstruct edge{ int to; int next;};int tot,head[maxn];edge e[maxn<<1];void init(){ tot=0; memset(head,-1,sizeof(head));}void addedge(int u,int v){ e[tot].to...

2019-08-19 11:49:29 115

原创 数位dp

数位dp的思想在于:对于例如725这个数,我们计算1-725或者0-725之间的所有情况。从最高为开始:有0,1,2,3,4,5,6,7.其中:两个数字最为关键:0,7,而其他数字则是包含了以后所有的情况。故我们需要对这两个数字采用两个bool类型来判定。一共就有四种情况。性质:1.数位dp中,经常关注每个数位上的值,这就导致在很多情况下,由于数位的增长非常容易的原因,导致...

2019-08-19 10:15:32 88

原创 线段树与树状数组

线段树和树状数组都是一种基于区间的修改查询操作。这两种修改和查询操作相互影响,不能独立编写。单值处理,区间查询结构体完成struct node{ int l,r; ll sum;};struct SegmentTree //单点修改,区间查询{ node tr[maxn<<2]; inline void buildInit(in...

2019-08-16 15:12:09 234

原创 系统生物和生物学中的数理知识

1.生物系统学的必要性生物还原论:生物单个细胞组分的信息生成、化学成分和它们的生物功能。生物整体论:一个系统的性质不简单地等于组成部分性质的叠加。2.基因回路遗传和细胞间的功能是分层的,并且涉及到很多的层次。给定DNA序列,我们能用开方读码框(ORF)(在mRNA上,沿5'至3'方向,从起始密码子到终止密码子之间的一段核苷酸序列,称为一个开放读码框架,读码框架内每3个碱基...

2019-08-13 18:56:53 187

原创 主席树

什么是主席树

2019-08-13 18:18:15 69

原创 高精度

大数据高精度模版:加法和乘法(修改进行优化,并弄清原理)struct BigInt{ const static int mod = 10000; const static int DLEN = 4; int a[maxn],len; BigInt() { memset(a,0,sizeof(a)); len=1;...

2019-08-13 17:52:07 104

原创 概率dp

概率dp的内容概率dp研究有关于概率,步数,期望的等问题。数学期望 P=Σ每一种状态*对应的概率。 因为不可能枚举完所有的状态,有时也不可能枚举完,比如抛硬币,有可能一直是正面,etc。 但是现在发现大多数题就是手动找公式或者DP推出即可,只要处理好边界,然后写好方程,代码超级简短。与常规的求解不同,数学期望经常逆向推出。比如常规的dp[x]可能表示到了x这一状态有多少,最后答案是d...

2019-08-13 10:19:23 529

原创 AC自动机及后缀自动机

ac自动机是一种基于trie树的算法,其本质和kmp上的处理很相似。trie树结构:https://blog.csdn.net/qq_38890926/article/details/81158021kmp转移思路:https://blog.csdn.net/qq_38890926/article/details/81158132ac自动机组要由三个部分组成:trie树的建立 ...

2019-08-12 09:38:52 397

原创 搜索,打表,构造

常见的可以通过搜索,打表,构造进行的做法1.我们经常会做一种dp,也即是,询问的方法数。其中对于给定排序后,相同结果的dp值相同的情况下,我们可以考虑dfs.原因就在于虽然总的情况很多,但是通过有效的分类,我们需要计算的东西并不多。Gym 101174H2.定义为goodnumber,其中d表示1-9的数字,n表示1-n中的每一个数字,表示1-n中各个数上数字为d的个...

2019-08-11 23:37:07 98

原创 计算几何

目录1.点和向量:2.直线点到直线距离:两直线(线段)相交点在线段上两线段相交线段的延长多线段组成的区域连通性三角形面积:多边形面积:3.圆圆与圆的位置关系余弦定理平面几何欧拉定理计算几何中关心一些常见的计算集合中的几何元素,如点、直线、向量、平面等1.点和向量:电和向量的表示方法类与基本符号运算。向量的点乘、叉乘、...

2019-08-11 09:45:04 259

原创 hash-哈希

数值映射的hashconst int hashsize=31643,maxnode=100000;struct Hash{ struct HashNode{ll key;ll val;int next;}; HashNode node[maxnode]; int head[maxnode],tot; Hash(){clear();} void cl...

2019-08-04 20:21:03 250

原创 数论

GCD问题和LCM问题两个数的gcdg=gcd(a,b) 则g<=a && g<=bll gcd(ll a,ll b){ return b==0?a:gcd(b,a%b);}由该算法我们可以知道,给定a,b由a,b进行加减得出来的数都是gcd(a,b)的倍数,并且能得到任意倍数两个数的lcml=gcd(a,b) 则l>=a &...

2019-08-03 22:36:11 290

原创 容斥,积性函数,卷积,数论

质数,欧拉函数,莫比乌斯函数等积性函数筛法积性函数都可以在复杂度内计算出来。如何线性筛?首先计算,其次当为质数的时候可得.接下来筛的时候,如果则.,我们需要手动推出等他们之间的关系。//欧拉筛打表o(n)int tot,prime[maxn];bool isPrime[maxn];int phi[maxn],mu[maxn];void init(){ m...

2019-08-02 10:16:57 357

原创 凸包

图报的定义凸包(Convex Hull)是一个计算几何(图形学)中的概念。在一个实数向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包。X的凸包可以用X内所有点(X1,...Xn)的凸组合来构造.在二维欧几里得空间中,凸包可想象为一条刚好包著所有点的橡皮圈计算几何相关链接:https://blog.csdn.net/qq_38890926/article/d...

2019-08-01 20:58:19 305

原创 构造

构造题1.将1-n分成k分,使得每份的和相同HDU - 6616对于给定的n和k,其中k是n的因子,求出n/k的值。考虑将这n个数分成k*(n/k)的矩阵,也即是n行 n/k列。容易知道如果采用蛇形排列,即可使得相邻两列的每行求和相等,故如果n/k为偶数,即可排列出结果。如果n/k为奇数,我们考虑能否构造出k*3的,使得其求和结果相同。这样就能将剩下的排列成偶数列即可。故只需要构造...

2019-08-01 15:54:00 111

原创 数据离散化

离散化思想将已知数值进行排序,从而获取每个数值在已知数值中的地位。数值离散化struct Discretization{ vector<int> mp; int len; void clear(){mp.clear();len=0;} void add(int val){mp.push_back(val);} void discr...

2019-08-01 10:56:47 118

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除