- 博客(22)
- 收藏
- 关注
原创 git restore撤销修改
介绍:git restore < filename >可以用户撤销工作区中还没有缓存的修改,也就是在工作区中进行了修改并且还没有使用git add将这些修改添加到缓存区。若这些修改已经使用git add添加到了缓存区,但还没有使用git commit 添加到版本库,那么可以使用git restore --staged < filename >。举个栗子:当前处于主分支,共有一个文件f1,f1中已经有了一些内容,如下所示。现在我在f1中添加一行新内容,然后查看分支状态。从上
2021-05-27 11:43:04 1682
原创 git diff命令的简单使用
git diff命令的简单使用git diff 命令用于比较工作区和缓存区的区别,若加上–cached选项则比较的是缓存区和本地仓库的区别。下面用一个例子来说明。当前所处的位置是主分支(master),共有两个文件f1和f2,并且当前分支是clean的,即此时工作区、缓存区和本地仓库三个地方是保持一致的。这个时候我们给f2追加一些内容(line1是f2中之前已经存在的数据,line2是刚追加的)。这里我们的修改是在工作区中进行的,因此缓存区和本地仓库都没有被修改。所以,现在的状态是工作区和缓存区
2021-05-26 17:35:20 1216
原创 python 中的map() 、reduce() 和filter()函数
python中有几个比较有意思的函数map() 、reduce() 、filter()1.map()可以将一个序列(比如说列表)或可迭代对象的元素按照一个函数进行映射。map对序列中的每个值都会调用我们传入的函数,得到映射以后的值,最终可以形成一个序列。比如:def f(a): return a*2print(list(map(f,[1,2,3,4])))#输...
2019-09-28 19:58:53 195
原创 python中字典的直接赋值、浅拷贝和深拷贝
在python中进行字典的赋值的时候发现了一个问题:有一个列表b=[{'a':1,'b':2}],列表b中现在只有一个字典{‘a':1,'b':2}。现在要在b中添加另一个字典,这个字典的key和b中现有字典的key一样,但是value是它的两倍。于是我写了下面这段代码:b=[{'a':1,'b':2}]c=b[0]for x,y in c.items(): c[...
2019-09-27 19:54:20 1567
原创 强关联规则挖掘
挖掘强关联规则的过程:1.得到最大频繁项目集(这里使用apriori算法)2.在最大频繁项目集中找强关联规则工程结构:(把下面的文件放到自己建的工程中就可以运行了,如果嫌麻烦的话把这些都放到main.cpp中也可以,建议分开放。但是要注意代码中有一个地方用到了自动数据类型auto,要开c++11,否则编译会报错,如果没开的话按照代码注释改一下就可以了。)codeblock中...
2019-09-24 11:06:05 3104
原创 畅通工程续(最短路径,使用spfa)
题目链接:畅通工程续题意:点击上面的链接自行查看单源点最短路径,使用spfa。#include <bits/stdc++.h> //有的oj中选择c++编译失败,可以考虑换头文件或者选择G++试一下#include<cstring>#define L(x) (x<<1)#define R(x) (x<<1|1)#define ...
2019-08-17 11:03:03 152
原创 Jurassic Jigsaw (最小生成树,使用kruskal)
题目链接:Jurassic Jigsaw题意:点击上面链接自行查看方法:题目要求的树其实就是最小生成树,这里使用kruskal算法。kruskal算法简介:在所有边中每次都找边权最小的来组成最小生成树,但是要保证这条边的两个端点属于两个不同的连通块,否则添加完这条边以后就出现了环,既然有环那就不是树了。所以需要判断两个点是否属于同一个连通块,这可以使用并查集实现。(kruskal不...
2019-08-17 10:08:42 407
原创 LCA(使用树链剖分)
最近刚好学了树链剖分,来一道LCA的模板题练练手:P3379 最近公共祖先(LCA)题意:给一棵多叉树,m次询问,求两个节点之间的LCA。思路:树链剖分。#include <bits/stdc++.h>#include<cstring>#define L(x) (x<<1)#define R(x) (x<<1|1)#define...
2019-08-16 19:57:18 185
原创 树状数组
这篇博客主要列举一些树状数组的用处树状数组:区间更新,单点求值。题目:Color the ball#include <bits/stdc++.h>#define L(x) (x<<1)#define R(x) (x<<1|1)#define fori(a,b,c) for(int a=b;a<=c;a++)#define ford(a...
2019-08-16 16:23:57 127
原创 树链剖分
树链剖分将树的所有节点按照dfs序组织成线性的链,然后就可以使用线段树来处理这个线性链,这样就可以将原来树上的一些操作转换成线段树上的操作。(注:也可以使用其他数据结构来处理,比如树状数组。到底用什么需要视情况而定,这里附上我之前一篇关于树状数组的博文:树状数组)简要描述:1.由于子树中所有节点的编号都是连续的,所以对子树的操作就可以直接转换成对线段树中的一个区间的操作。2.如果要...
2019-08-16 16:23:32 129
原创 tarjan求割点和桥(割边)
tarjan求割点和桥参考博客:tarjan求割点和桥(割边)例题:割点代码(重要的地方在代码中都有注释):#include<bits/stdc++.h>#define ll long longusing namespace std;const ll M=2e4+10,maxn=3e6+30;int dfn[M],low[M],tot;int e[M&l...
2019-08-12 15:20:31 492
原创 tarjan缩点
tarjan缩点的方法:用tarjan求强连通分量,然后将同一个强连通分量中的点合成到同一个新节点中(需要借助一个belong数组)。题目链接:P3387缩点思路:先缩点,新节点的值等于强连通分量中所有节点权值之和。缩点之后就由原图得到了一张新图(其实是一棵树),然后再dfs,求出从根节点到叶子节点权值之和的最大值(dp)。代码:#include <cstdio>...
2019-08-12 15:17:47 1275
原创 Graham's Scan求凸包(convex hull)
graham's scan 求凸包:先将所有点根据x,y按字典序排序,显然字典序最小的和最大的都是凸包上的点,字典序最小的是凸包中左下角的点,字典序最大的是凸包上右上角的点。(设字典序最小的点为A,如下图第0个点,字典序最大的点为B,如下图第6个点)那么整个凸包就被A、B分成了两条链,A->B,B->A。那么就只要分别从A和B开始不断增加点得到这两条链就可以了。由于graham...
2019-08-10 18:39:13 183
原创 大数加法、减法、除法
当数值很大的时候,两个数的简单运算计算机也是不能处理的,因为整数和浮点数在计算机中都是由范围限制的,所以当数很大的时候可能会溢出。这个时候就需要用字符串来模拟计算了。加法:string add(string &a,string &b){ string sum; int s=0,z=0,i=a.size()-1,j=b.size()-1; whil...
2019-08-04 13:59:20 211
原创 匈牙利算法
匈牙利算法用来求解二分图的最大匹配。设二分图由点集S和点集H组成,v∈S,u∈H。算法过程:1.循环S中的点v,看v能否匹配到H中的点。2.使用dfs在H中寻找v的比配点。 访问H中与v有边的点,若它还没匹配其他的点,那么让它匹配v点,返回匹配成功。 若它已经匹配了其他的点那么看与它匹配的点是否可以和另外的点匹配,若能则让它和v匹配,否则v匹配失败。...
2019-08-02 11:43:52 161
原创 线段树
线段树用来维护区间,常用来处理与区间相关的问题。模版题:敌兵布阵题意:给一个1到n的区间,以及每个点的初始值,然后会再区间上进行操作:修改区间中某一点的值,以及询问一个区间中所有点的和。思路:用线段树维护整个区间上的值,然后就是单点更新,以及区间求和。代码:#include<cstdio>#include<iostream>#define ll l...
2019-08-02 11:25:19 114
原创 bfs&dfs
bfs模版题题目1:Catch That Cow题意:直线上从n点移动到k点需要多少时间,共有3中移动方式(假设当前位置是x):1.移动到左边(x-1)2.移动到右边(x+1)3.移动到2*x每种移动所需的时间都是1分钟。思路:bfs搜索,从每一个当前状态x最多都可以扩展出三个状态:x-1 、x+1、2*x,当bfs到终点k的时候结束。代码:#include&...
2019-08-02 11:03:54 108
原创 矩阵快速幂
矩阵快速幂通常可以用来加速计算递推关系(因为可以使用快速幂来求矩阵的乘法)。矩阵快速幂主要由两个函数组成:#include<iostream>#include<cstdio>#include<set>#include<map>#include<vector>#include<queue>#include&...
2019-08-02 10:33:11 133
原创 最大流
最大流题目链接EK算法:在残余网络中不断寻找增广路径(使用bfs)直到不能再增广,并把每次找到的增广路径的流量加起来就是最大流。#include<iostream>#include<cstdio>#include<set>#include<map>#include<vector>#include<queu...
2019-08-02 10:02:46 134
原创 背包问题
背包问题01背包问题:给一个容量为V的背包,以及N个物品,每个物品的体积是ci,价值是wi,将那些物品放到背包中能使得价值之和最大,求这个最大值。思路:设dp[i][v]为前 i种物品放到容量为v的背包中能得到的最大价值。由于第i个物品要么放入背包要么不放入,所以状态转移方程为 dp[i][v]=max(dp[i-1][v],dp[i-1][v-ci])复杂度:使用滚动数组...
2019-07-28 18:26:31 321
原创 K-Master of Graph 长春理工大学第十四届程序设计竞赛
K-Master of Graph 长春理工大学第十四届程序设计竞赛题目链接:题目传送门题意:点击上面链接看原题主要思路: 使用线段树,树中每个节点都保存这个区间内所有数的和。然后后来的操作就是区间更新和区间查询了。 但是如果只是这样的话会超时,还要做一些优化。想一想,如果一个数本身就是一位数(小...
2019-07-14 19:42:21 109
原创 A-Rubbish 长春理工大学第十四届程序设计竞赛
A-Rubbish 长春理工大学第十四届程序设计竞赛题目链接:题目传送门题目内容请点击上面链接查看(能够看到这里的应该都是看过题目的)方法:使用dfs,每次dfs将一块垃圾删除,然后计数一次,等所有的点都删除之后就得出了垃圾的个数。注意的地方:1.内存限制。不能开一个二维数组来保存桌面的情况,这样会超出题目的内存限制。所以可以用set来模拟一个二维数组。AC代码:#include...
2019-07-13 16:58:04 248
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人