- 博客(90)
- 收藏
- 关注
原创 【Linux】git
仓库的目录。工作区是独立于各个分支的。数据暂时存放的区域,类似于工作区写入版本库前的缓存区。暂存区是独立于各个分支的。存放所有已经提交到本地仓库的代码版本树结构,树中每个节点代表一个代码版本。.........
2022-07-21 16:26:48
244
1
原创 【Linux】ssh
用户名hostnameIP地址或域名输入yes,然后回车即可。这样会将该服务器的信息记录在文件中。然后输入密码即可登录到远程服务器中。默认登录端口号为22。
2022-07-20 19:41:24
160
原创 【Linux】shell 语法
定义变量,不需要加$name1='CodeEcho'#单引号定义字符串name2="CodeEcho"#双引号定义字符串name3=CodeEcho#也可以不加引号,同样表示字符串等号左右两边不能空格(悲,这码风不适合我)数组用小括号表示,元素之间用空格隔开。......
2022-07-18 15:48:14
286
原创 【编译原理】词法分析
在词法解析中有一个概念叫,字母表并不是单单指字母组成的集合,它是指一组数量有限的符号的集合。例如C语言中常用的 ASCII 字符集就可以称作字母表。所有汉字的集合也可以称作字母表。{‘0’,‘1’}是二进制的字母表。字符串或者叫,是字母表中一系列符号的组合,例如英语单词,中文的词组都可以称之为字符串。在实际运用中,字符串就是字母数组。有一种特殊的字符串叫空字符串,也就是不包含任何字母的字符串。在C语言中可以用只包含’\0’的数组作为空字符串, char buf[10] = {‘\0’}。有一个概念叫, 他是
2022-07-07 19:54:53
2443
原创 【编译原理】输入系统
它的作用是将源文件从磁盘或内存中读入,根据模块化设计原理,如果输入系统是一个独立模块,通过固定接口与词法解析器交互的话,那么它的修改和维护将会非常灵活。输入系统的效率,决定着整个编译系统的效率。 我们用C语言的时候,经常会用到他提供的输入函数例如 scanf 等C语言的输入系统设计得不是很合理。当C语言的库函数将数据读入程序的过程中,有三次拷贝,这些拷贝都需要耗费时间和空间。另外,词法解析器在解析时需要预先读入一些字符(look ahead), 以便对输入的字符串打上合适的标签(想象前面的typeof 语
2022-07-07 19:53:58
364
原创 【Algorithm】2021 RoboCom 世界机器人开发者大赛-本科组(初赛)
给定n个数,再给定k组数,要求判断每一组内的任意一个数,是否存在n个数内任取四个数的平均值等于它本身。四层循环去枚举取数的过程。由于下标会出现小数,所有用 map 来存。为了避免精度问题,bool 数组下标存下四个数之和而不是平均值,最后判断每一组数的四倍是否在 bool 数组内。 芬兰木棋 (25分) 如果要获得最大分数,那可以把所有木棋都击倒,最大分数就是所有木棋得分之和为了尽量减少击打次数,那么需要把同一方向的得分为 1 的连续的木棋一次性击倒,其余的木棋都是一个木棋击打一次。同一方向可以
2022-07-07 11:20:31
238
原创 【Algorithm】扩展欧几里得算法
若 a,b 是整数,且 gcd(a, b) = d,那么对于任意的 x,y,a * x + b * y 一定是 d 的倍数,特别地,一定存在整数 x,y 使得 a * x + b* y = d。线性同余方程因为 a∗x ≡ b(mod m) 等价于 a∗x−b 是 m 的倍数,因此线性同余方程等价为a∗x+m∗y = b根据裴蜀定理,上述等式有解当且仅当 gcd(a,m) | b因此先用扩展欧几里得算法求出一组整数 x0x_0x0,y_0, 使得 a∗x0x_0x0+m∗y0y_0y0 =
2022-06-30 14:14:55
108
原创 【Algorithm】逆元
当 p 是质数时,可以利用快速幂求逆元。a / b ≡ a * x (mod n)两边同乘 b 可得 a ≡ a * b * x (mod n)即 1 ≡ b * x (mod n)同 b * x ≡ 1 (mod n)由费马小定理可知,当n为质数时bn−1b^{n - 1}bn−1 ≡ 1 (mod n)拆一个 b 出来可得 b * bn−2b^{n - 2}bn−2 ≡ 1 (mod n)故当n为质数时,b的乘法逆元 x = bn−2b^{n - 2}bn−2扩展欧几里得算法求逆元当
2022-06-30 13:42:44
218
原创 【Algorithm】欧拉函数
可通过容斥原理证明上述 ϕ(N)\phi{(N)}ϕ(N)tip: 当 m,n 互质时,ϕ(m∗n)\phi(m * n)ϕ(m∗n) = ϕ(m)\phi(m)ϕ(m) * ϕ(n)\phi(n)ϕ(n)质数 i 的欧拉函数 phi[i] = i - 1 :1 ~ i - 1 均与 i 互质;i * primes[j] (合数) 时,.........
2022-06-28 20:18:04
127
原创 【Linux】常用文件管理命令
1) ctrl c: 取消命令,并且换行(2) ctrl u: 清空本行命令(3) tab键:可以补全命令和文件名,如果补全不了快速按两下tab键,可以显示备选选项(4) ls: 列出当前目录下所有文件,蓝色的是文件夹,白色的是普通文件,绿色的是可执行文件(5) pwd: 显示当前路径(6) cd XXX: 进入XXX目录下, cd .. 返回上层目录(7) cp XXX YYY: 将XXX文件复制成YYY,XXX和YYY可以是一个路径,比如../dir_c/a.txt,表示上层目录下的dir_
2022-06-28 17:04:32
245
原创 【Algorithm】质数
若一个正整数无法被除了 1 和它自身之外的任何自然数整除,则称该数为自然数(或素数),否则称该正整数为合数。在整个自然数集合中,质数的数量不多,分布比较稀疏,对于一个足够大的整数 N,不超过 N 的质数大约有 N / lnN 个,即每 lnN 个数中大约有一个质数。(然而,我不知道有什么用,至今没碰到过应用QwQ)试除法分解质因数朴素筛法求素数线性筛法求素数合数只会被它的最小质因子筛掉...
2022-06-27 20:42:25
122
原创 【Algorithm】约数
约数个数和约数之和正整数 N 能够被唯一分解为 约数个数:约数之和: 约数之和: k 较小,但是 B 是5e7,遍历等比数组求和会超时。可以分治来做:例如,求 即 sum(p, k)通用求等比数列和的方法欧几里得算法 -- 最大公约数...
2022-06-27 18:08:48
177
原创 【Algorithm】GPLT L3-020 至多删三个字符
表示前 个字符删掉 个字符结果有 个。这样会有重复的。例如一个字符串 abcdefdxyz,删除 def 和删除 efd 后得到的字符串都是abcdxyz。这时候就要去重了,根据上面那个例子,可以发现对于一个字符 s[ i ],如果在 i 之前存在一个 last,使得 s[ last ] = s[ i ],那么删除 [ last, i - 1 ] 间的字符和删除 [ last + 1, i ] 间的字符其实是重复的。那么 dp[ i ][ j ] 就要减去这个重复,这个重复可表示为 dp[ last
2022-06-23 15:02:02
231
原创 【Algorithm】GPLT L2-013 红色警报
用图的深度优先遍历计算图内的连通分量有多少个,记为num。之后对于每一次输入数据,因为城市 x 被攻占,所以把 x 的所有路径标注为不可达(即 0 ),再统计连通分量的个数 t ,如果 t > cnt + 1,也就是说当现在的连通分量多余以前的连通分量 +1 的时候,说明改变了图的连通性;(因为城市被攻占本身它城市自己就变成了一个单独的城市,多出来一个连通分量),每一次 t 在用完之后把 num 的值更新为 t ,保证下一次的判断是建立再已经失去之前这么多城市的基础之上的。因为题目中说输入保证给出的被攻占的
2022-06-16 16:41:48
159
原创 【Algorithm】GPLT L2-014 列车调度
活用 STL必须要车号大的先出,小的后出。所以列车排队的每一队必须是从大到小排列(从右往左看),才能保证开出去的车也是从大到小的。对于每一个想要进入并列铁轨的车:(1)如果车号大于每一队的队尾的车号,说明不能进入已经有的队伍,必须进入新的铁轨。(2)否则,选择一个最接近它车号的尾部车号的队伍进入其实无需保存每一个并行队列的所有值,只需要保存当前队伍的车尾(就是每一列最左边 即 每一列的最小值)即可。因为每一次都是需要排序比较大小的,所以用 set 自动排序。每一次 set 的最后一个值 st.rbegin(
2022-06-16 14:49:04
197
原创 【Algorithm】GPLT L2-007 家庭房产
两个结构体数组,一个用来接收数据,另一个用来输出答案。用 Union 函数来合并。由于要输出家庭成员的最小编号,所以,家庭成员的最小编号便作为这个家庭集合的标志,p[find(a)] = find(b) ( find(a) > find(b))。vis 数组用来标记所有出现过的人。people 来统计家庭人数。标记flag ,true 的数量,就是家庭的数量。......
2022-06-14 17:05:01
296
原创 【Algorithm】最长上升子序列 II
这题看似是动态规划问题,但注意其数据范围。最长上升子序列动态规划做法的时间复杂度是,此题数据范围较大,必超时。首先,求最长上升子序列的问题和它的子问题有这样的依赖关系:上图这样就可以求得序列 3 1 2 1 8 5 6 的 LIS 长度是 4 ,把 6 接在 1 2 5 后面即可。所以,要求串 a[0...i] 的 LIS ,就要知道:串 a[0...i-1] 中各长度的上升子序列末尾元素的最小值。 后者可以用一个 q 数组来存储,q[i] 是所有长度为 i 的上升子序列末尾元素的最小值。这个数组是严格单
2022-06-10 17:49:04
351
原创 【JavaWeb】jQuery
jQuery 介绍 jQuery 的初体验 jQuery 核心函数 jQuery 对象和 dom 对象区分 jQuery 选择器(重点)jQuery 元素筛选 jQuery 的属性操作 DOM 的增删改 CSS 样式操作 jQuery 动画 jQuery 事件操作
2022-04-25 21:51:29
235
原创 【Algorithm】GPLT L2-038 病毒溯源
L2-038 病毒溯源v[ i ] 中保存第 i 种病毒可能产生的变异病毒编号,in[ i ] 中保存编号 i 的入度,入度为零的病毒为源头病毒,pre[ i ] 中保存病毒由哪种病毒变异而来(上级病毒)。为了保证序列最小,在输入 v[ i ]后可对其进行一次排序,然后通过 BFS 找到变异次数,过程中由 res 和 idx 标记最多变异次数量以及对应的病毒编号,最后通过pre找回完整变异链。#include <iostream>#include <algorithm.
2022-04-22 20:22:17
521
原创 【Algorithm】GPLT L2-039 清点代码库
L2-039 清点代码库将每一个功能模块用vector<int>存储,并将其储存在map容器内。最后将数量与模块输出储存在可以有多个相同key值的multimap容器内。因为按照升序输出,所以添加一个容器参数greater<int>。这样一来multimap容器内就是排好序的答案啦,然后直接输出答案即可。set, map, multiset, multimap, 基于平衡二叉树(红黑树),动态维护有序序列 size() empty() clea...
2022-04-22 17:35:43
2134
1
原创 【Algorithm】GPLT L2-012 关于堆的判断
L2-012 关于堆的判断必须注意,因为题目要求按照插入的顺序建立,所以是边插入边调整的,必须用向上调整,每次输入一个数之后就将它向上调整。两者建立出来的二叉树不同,而不能采用先转换为二叉树的方式再向下调整。这里的输入很巧妙~#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int N = 1010;int n, m;
2022-04-22 13:42:33
1418
原创 【Algorithm】搜索与图论
树与图的遍历拓扑排序最短路DijkstraBellman-FordSPFAFloyd最小生成树PrimKruskal
2022-04-22 10:21:03
99
原创 【Algorithm】Kruskal
Kruskal算法时间复杂度是 O(mlogm), n 表示点数,m表示边数int n, m; // n是点数,m是边数int p[N]; // 并查集的父节点数组struct Edge // 存储边{ int a, b, w; bool operator< (const Edge &W)const { return w < W.w; }}edges[M];int find...
2022-04-22 10:13:53
204
原创 【Algorithm】Prim
朴素版prim算法时间复杂度是 O(n^2+m), n 表示点数,m表示边数int n; // n表示点数int g[N][N]; // 邻接矩阵,存储所有边int dist[N]; // 存储其他点到当前最小生成树的距离bool st[N]; // 存储每个点是否已经在生成树中// 如果图不连通,则返回INF(值是0x3f3f3f3f), 否则返回最小生成树的树边权重之和int prim(){ memset(dist,...
2022-04-22 09:44:06
546
原创 【Algorithm】Bellman-Ford
Bellman-Ford算法时间复杂度 O(nm), n 表示点数,m表示边数注意在模板题中需要对下面的模板稍作修改,加上备份数组,详情见模板题。int n, m; // n表示点数,m表示边数int dist[N]; // dist[x]存储1到x的最短路距离struct Edge // 边,a表示出点,b表示入点,w表示边的权重{ int a, b, w;}edges[M];// 求1到n的最短路距离,如果无法从1走到n,则返回-1。.
2022-04-21 19:40:46
88
原创 【Algorithm】拓扑排序
有向无环图 -- 拓扑图拓扑序不唯一有向图的拓扑序列惊!数组模拟队列居然还有这种存储作用#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int N = 1e5 + 10;int n, m;int h[N], e[N], ne[N], idx, d[N], q[N];int add(int a, int b){.
2022-04-21 15:50:45
141
原创 【Algorithm】KMP
KMP -- 字符串的匹配问题给定一个模式串 S,以及一个模板串 P,所有字符串中只包含大小写英文字母以及阿拉伯数字。模板串 P 在模式串 S 中多次作为子串出现。求出模板串 PP 在模式串 SS 中所有出现的位置的起始下标。暴力:只要枚举文本串的起始位置 i,然后从该位开始逐位与模式串进行匹配,如果匹配过程中每一位都相同,则匹配成功;否则,只要出现某位不同,就让文本串的起始位置变为 i + 1,并且从头开始模式串的匹配。这种做法的时间复杂度为 O(n * m)。for (int i = 1;
2022-04-17 21:29:15
293
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人