知识详解
东さん
无知而狂妄
展开
-
关于树状数组区间修改和查询详解
原版介绍 这里我想再加上自己的理解,解释一下。 现在我们需要的是把某个区间的值修改,然后查询 我们设原数组为 a[1] a[2] …. a[n] 我们添加一个c1数组 来记录此项与前一项的差值 即 c1[i] = a[i] - a[i-1] 再添加上c2数组,根据公式c1与c2的关系(下面会说到) c2[i] = (i-1)*(a[i] - a[i-1]) 下面是推导原创 2017-06-23 01:07:35 · 381 阅读 · 0 评论 -
简单理解树状数组(单个数据)
树状数组 单个数据修改,和用区间查询总和原创 2017-06-22 23:32:07 · 252 阅读 · 0 评论 -
简单理解树状数组(单个数据)
我们把原数组设为 a[] ,然后数组是从 1 开始的,一共 n 个数,存入原始数组for(int i = 1; i <= n; i++) { scanf("%d", &x); updata(i, x);}每次输入的时候都要 updata,那么 updata 是什么呢,不要急,代码如下:void updata(int x, int v) { while(x <= n) {原创 2017-06-24 13:47:51 · 259 阅读 · 0 评论 -
最短路小结 Floyd + Dijkstra + 带花费 + 字符节点
Floydps:有向图是带有方向的图,就是有箭头的图,此介绍以有向图为例,无向图不计方向。初始工作把这张有向图用一个二维数组存储,第一个下表表示起点,第二个表示终点,数组值代表长度。 如下图: 1 2 3 4 1 0 2 6 4 2 ∞ 0 3 ∞ 3 7 ∞ 0 1 4 5 ∞ 12 0自己到自原创 2017-07-21 15:42:00 · 546 阅读 · 1 评论 -
并查集 +最小生成树
并查集:并查集简单来说就是数据分类,怎么分呢,初始把数组 pre[i] = i 设定,表示自己归属于自己,如果A是B的老大,那么pre[A] = A, pre[B] = A, 那么后来查询B的时候,我们就可以用一个函数查到他的老大是谁(函数后面介绍)int find(int x) { return pre[x] == x ? x : find(pre[x]);}void join(int原创 2017-08-05 18:09:49 · 658 阅读 · 1 评论 -
欧几里得+扩展欧几里得(理解)
欧几里得:辗转相除法 代码:typedef long long LL; LL gcd(LL a, LL b) { return b == 0 ? a : gcd(b, a%b);}用途:是一个求最大公约数的计算方法;自己的理解:对于传入的数值进行判定,是否b位置为0(因为b随着调用会改变),如果不为0继续调用,a,b的值进行变换, 如果为0,返回a位置的值;看起来与最大公约数无关,其原创 2017-11-19 00:47:44 · 341 阅读 · 0 评论 -
Git 使用 + 命令
设置$ git config --global user.name "Your Name"$ git config --global user.email "[email protected]"name = Fristname Lastnameemail = [email protected] config命令的–global参数,这个参数,表示你这台机器上所有原创 2018-01-05 20:46:01 · 439 阅读 · 0 评论 -
Git 分支 + gitflow
分支在Git里,master分支为主分支。 HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。 HEAD的指向就是当前编辑的分支。创建分支$ git checkout -b devSwitched to a new branch 'dev'git checkout命令加上-b参数表示创建并切换,相当...原创 2018-01-06 15:07:28 · 700 阅读 · 0 评论