- 博客(32)
- 收藏
- 关注
原创 2020 寒假记录(二)
知识点:二分,区间搜索数的范围https://www.acwing.com/problem/content/791/二分#include <iostream>#include <cstring>#include <cmath>using namespace std;int arr[100010];int main() { ...
2020-01-14 16:31:00
232
原创 2020 寒假记录(一)
知识点:DFS、枚举费解的开关https://vijos.org/p/1197当第 \(i\) 行的状态确定了之后,只有第 \(i+1\) 行可以影响它,也就是翻完第一行后,后面每一行的操作也就是确定的了,所以枚举第一行的32种状态即可。深搜#include <iostream>#include <algorithm>#include <cst...
2020-01-12 17:38:00
176
原创 winForm 使用List<T> 绑定 DataGridView.DataSource ,无法正常显示
winForm 使用 List<T> 绑定 DataGridView.DataSource ,无法正常显示。\(\color{red}{如果直接用类的字段等来显示,则无法显示数据,要用类的属性才能正常显示。}\)这样显示不了。class Student { public string Name; public string Age...
2019-12-31 08:54:00
148
原创 PAT (Basic Level) 乙组全题记录
前后12天,乙组的所有题目算是刷完了,总体感觉不太难,偶尔有一两道题卡了一会也是审题不清、特殊数据,或者一些逃不掉的坑,但收获依然不少,明白了“永远要用最大的恶意去揣测出题人”,也改掉不少坏习惯,甲组的题目寒假才有时间继续做了。2020.3月,PAT 干。1001 害死人不偿命的(3n+1)猜想#include <iostream>using namespace std...
2019-11-23 22:56:00
838
原创 数据结构篇——字典树(trie树)
引入现在有这样一个问题, 给出\(n\)个单词和\(m\)个询问,每次询问一个单词,回答这个单词是否在单词表中出现过。好像还行,用 map<string,bool> ,几行就完事了。那如果n的范围是 \(10^5\) 呢?再用 \(map\) 妥妥的超时,说不定还会超内存。这时候就需要一种强大的数据结构——字典树基本性质字典树,又叫Trie树、前缀树,用于统计,排...
2019-11-09 23:38:00
254
原创 分组密码体制【密码学笔记】
分组密码的基本概念 分组密码在加密过程中不是将明文按字符逐位加密,而是首先要将待加密的明文进行分组,每组的长度相同,然后对每组明文分别加密得到密文。加密和解密过程采用相同的密钥,称为对称密码体制。 例如将明文分为\(m\)块:\(P_{0},P_{1},P_2,…,P_{m-1}\),每个块在密钥作用下执行相同的变换,生成\(m\)个密文块:\(C_0,C_1,C_2,…,C_{...
2019-11-09 20:19:00
2975
原创 数据结构篇——并查集
基本概念 并查集是一种维护集合的数据结构,“并”,“查”,“集” 三个字分别取自 Union(合并),Find(查找),Set(集合)。并查集是若干个不相交集合,能够在 \(O(1)\) 实现两个集合的合并,判断两个元素是否属于同一集合应用,如其求无向图的连通分量个数、实现kruskal算法求最小生成树。并查集的实现方法就是一个数组:int pre[N];其中 pre[i] 表...
2019-11-08 23:12:00
171
原创 数据结构篇——优先级队列(堆)
基本性质 优先级队列,也叫二叉堆、堆(不要和内存中的堆区搞混了,不是一个东西,一个是内存区域,一个是数据结构)。 堆的本质上是一种完全二叉树,分为:最小堆(小根堆):树中每个非叶子结点都不大于其左右孩子结点的值,也就是根节点最小的堆,图(a)。最大堆(大根堆):树中每个非叶子结点都不小于其左右孩子结点的值,也就是根节点最大的堆,图(b)。基本操作均以大根堆为例存储...
2019-11-08 21:44:00
167
原创 基本代数概念与有限域下的椭圆曲线【密码学笔记】
群群G(group)是指由一个集合和一个二元运算 \(*\) (这里的 \(*\) 不是指乘法)构成的代数系,含有以下四个性质群在 \(*\) 下的运算是封闭的对于任意G中的两个元素,\(a\) 和 \(b\),\(a*b\) 也是 \(G\) 中的一个元素。群中有一个元素 \(e\),称为单位元对于群中的每个元素 \(a\) 都满足 \(a*e=e*a\)群中每个...
2019-11-06 20:36:00
2050
原创 数据结构之树篇3——平衡二叉树(AVL树)
引入上一篇写了二叉排序树,构建一个二叉排序树,如果构建序列是完全有序的,则会出现这样的情况:显然这种情况会使得二叉搜索树退化成链表。当出现这样的情况,二叉排序树的查找也就退化成了线性查找,所以我们需要合理调整二叉排序树的形态,使得树上的每个结点都尽量有两个子结点,这样整个二叉树的高度就会大约在\(log(n)\) 左右,其中 \(n\) 为结点个数。基本性质 AVL树也称为平...
2019-11-06 16:05:00
277
原创 数据结构篇——平衡二叉树(AVL树)
引入上一篇写了二叉排序树,构建一个二叉排序树,如果构建序列是完全有序的,则会出现这样的情况:显然这种情况会使得二叉搜索树退化成链表。当出现这样的情况,二叉排序树的查找也就退化成了线性查找,所以我们需要合理调整二叉排序树的形态,使得树上的每个结点都尽量有两个子结点,这样整个二叉树的高度就会大约在\(log(n)\) 左右,其中 \(n\) 为结点个数。基本性质 AVL树也称为...
2019-11-06 16:05:00
370
原创 数据结构之树篇2——二叉排序(查找,搜索)树
引入基本性质:二叉排序树(又叫二叉搜索、查找树)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;若右子树不空,则右子树上所有结点的值均大于它的根结点的值;左、右子树也分别为二叉排序树。不允许有键值相同结点。二分查找与二叉排序树 二分查找也称为折半查找,要求原线性表有序,它是一种效率很高的查找方法。如果在需要进行频繁修改的表中采用二分查找,其效率也是非常低下...
2019-11-02 23:53:00
325
原创 数据结构篇——二叉排序(查找,搜索)树
引入基本性质:二叉排序树(又叫二叉搜索、查找树) 是一种特殊的二叉树,定义如下:若左子树不空,则左子树上所有结点的值均小于它的根结点的值;若右子树不空,则右子树上所有结点的值均大于它的根结点的值;左、右子树也分别为二叉排序树。不允许有键值相同结点。【如果真的出现了,那么放在左子树,右子树是无所谓的】二分查找与二叉排序树 二分查找也称为折半查找,要求原线性表有序,它...
2019-11-02 23:53:00
458
原创 数据结构之树篇1——二叉树
性质基本性质:二叉树_百度百科关于二叉树的深度(高度)涉及到结点的层数,有的教材规定根结点在第\(0\)层,有的则规定根结点在第\(1\)层。这里全部以《数据结构-C语言版》(严蔚敏,吴伟民版)为准:高度和深度为同一个概念,根节点在第1层,树的高度是看一共有几层。 高度为\(h\)的完全二叉树,最多有\(2^{n}-1\)个节点,第\(k\)层最多有\(2^{k-1}\)个节点。 ...
2019-10-31 00:25:00
166
原创 数据结构篇——二叉树
引入在数据结构中,将现实生活中的树根抽象为根节点(Root)树叉抽象为结点(Node),将叶子抽象为(Leaf),将树枝抽象为边(Edge),且一条边只用来连接两个结点,互为父子节点。二叉树的性质二叉树树可以没有结点,这种情况下把树称为空树。树的层次从根节点开始算,即根节点算第\(1\)层。【也有的教材规定根结点在第\(0\)层,这里全部以\(1\)层为准】把结点...
2019-10-31 00:25:00
185
原创 图论篇6——割点(关节点)
引入连通图 在一个**无向图**$G$中,若从顶点$i$ 到顶点$j$有路径相连,则称 $i$和$j$是连通的。如果图中任意两点都是连通的,那么图被称作连通图。如果$G$是有向图,则称为强连通图(注意:需要双向都有路径)。如果是单向连通,则称$G$为单向连通图。割点(关节点) 在无向连通图$G=(V,E)$中: 若对于$x\in V$, 从图中删去节点$x$以及所有与...
2019-10-31 00:07:00
724
原创 图论篇5——关键路径
引入AOE网和AOV网 上一篇的拓扑排序中提到了AOV网(Activity On Vertex Network),与之相对应的是AOE网(Activity on edge network),即边表示活动的网。 AOV用顶点表示活动的网,描述活动之间的制约关系。 AOE是带权值的有向图,以顶点表示事件,以边表示活动,边上的权值表示活动的开销(如项目工期)。AOE ...
2019-10-27 23:13:00
329
原创 图论篇4——拓扑排序
引入有向无环图(DAG) 如果一个有向图不存在环,也就是任意结点都无法通过一些有向边回到自身,那么称这个有向图为有向无环图。AOV网络 在有向图中,用顶点表示活动,用有向边$< V_i, V_j >$表示活动 $i$ 是活动 $j$ 的必须条件。这种有向图称为用顶点表示活动的网络(Active on vertices),简称AOV网络。在AOV网络中...
2019-10-26 23:41:00
257
原创 数论篇7——组合数 & 卢卡斯定理(Lucas)
组合数组合数就是高中排列组合的知识,求解组合数C(n,m),即从n个相同物品中取出m个的方案数。求解方式求解通式:$C^{m}_{n}=\dfrac {n!}{m!\left( n-m\right) !}$性质1:$C^{m}_{n}=C_{n}^{n-m}$性质2:$C^{m}_{n}=C^{m-1}_{n-1}-i+C^{m}_{n-1}$打表递推根据性质...
2019-10-26 21:37:00
641
原创 图论篇3——最短路径 Dijkstra算法、Floyd算法
最短路径问题背景:地图上有很多个城市,已知各城市之间距离(或者是所需时间,后面都用距离了),一般问题无外乎就是以下几个:从某城市到其余所有城市的最短距离【单源最短路径】所有城市之间相互的最短距离【任意两点最短路径】各城市距离一致,给出需要最少中转方案 【最少中转】深度优先搜索适用范围:啥都不适用,只能处理n<10的情况深搜求最短路径的思想和用深搜...
2019-10-26 16:55:00
322
原创 图论篇2——最小生成树算法(kurskal算法&prim算法)
基本概念树(Tree)如果一个无向连通图中不存在回路,则这种图称为树。生成树(Spanning Tree)无向连通图G的一个子图如果是一颗包含G的所有顶点的树,则该子图称为G的生成树。生成树是连通图的极小连通子图。这里所谓极小是指:若在树中任意增加一条边,则将出现一条回路;若去掉一条边,将会使之变成非连通图。最小生成树一个带权值的连通图。用$n-1$条边把$...
2019-10-24 23:40:00
250
原创 图论篇1——图的基本概念
图的基本性质顶点(vertex)上图中黑色的带数字的点就是顶点,表示某个事物或对象。由于图的术语没有标准化,因此,称顶点为点、节点、结点、端点等都是可以的。叫什么无所谓,理解是什么才是关键。边(edge)上图中顶点之间蓝色的线条就是边,表示事物与事物之间的关系。需要注意的是边表示的是顶点之间的逻辑关系,粗细长短都无所谓的。包括上面的顶点也一样,表示逻辑事物或对象,画的...
2019-10-24 23:12:00
441
原创 数论篇6——欧拉函数
欧拉函数记作$\varphi (n)$,表示小于等于n的数中与n互质的数的数目。(根据定义,phi(1)=1)通式$$\varphi(x)=x\prod_{i=1}^{n}(1-\frac{1}{p_{i}})$$其中$p_{i}$为$x$的所有质因数。举个例子:比如$\varphi (12)$,把12质因数分解,$12=2\times 2\times 3$,得到了2...
2019-10-20 21:22:00
554
原创 数论篇5——数论四大定理
数论四大定理:威尔逊定理欧拉定理孙子定理(中国剩余定理)费马小定理1.威尔逊定理在初等数论中,威尔逊定理给出了判定一个自然数是否为素数的充分必要条件。当且仅当$p$为素数时$(p-1)!\equiv -1(mod\ p)$简单点说就是,若$p$为质数,则$p$能被 $(p-1)!+1$ 整除但是由于阶乘是呈爆炸增长的,其结论对于实际使用不太...
2019-10-18 23:22:00
1181
原创 数论篇4——逆元(数论倒数)
问题引入对于取余运算,有一下一些性质:但是唯独除法是不满足的:为什么除法错的呢?很好证明:而对于一些题目,我们必须在中间过程中进行求余,否则数字太大,电脑存不下,那如果这个算式中出现除法,我们就需要逆元了,将除法运算转换为乘法运算。逆元定义:对于c,可以说是特殊意义上的倒数,我们可以理解为要求在0,1,2……p-1之间找一个数,是的...
2019-10-16 17:30:00
926
原创 数论篇3——扩展欧几里得算法
1、引入最大公约数gcd算法:辗转相除法int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b);}最小公倍数lcm算法:根据 a*b = gcd(a,b) * lcm(a,b)有 lcm = a*b / gcd,避免溢出,推荐写成lcm = a / gcd *bint lcm...
2019-10-16 17:29:00
158
1
原创 数论篇2——快速幂全解(模平方根算法)
模平方根算法求a的b次方有库函数 pow(a, b),可是它返回值是double类型,而且在不同开发环境下,数据有精度误差(比如某DEV,详见),如果自己写for循环,当b特别大时,超范围、超时都妥妥的。所以,就有了模平方根算法,也就是通常说的快速幂。原理://递归写法int pow_power(int a, int b,int MOD){//a的b次方 ...
2019-10-16 16:39:00
663
原创 数论篇1——素数问题
素数的一些神奇性质(1)所有大于$2$的素数都可以唯一地表示成两个平方数之差。证明如下:(2)麦森数如果$2^{p}-1$是素数,其中指数$p$一定也是素数。证明如下:原命题的逆否命题为:如果$p$不是素数,则$2^{p}-1$不是素数。如果p不是素数,可以假设 $p=m\cdot n$$2^p-1=(2^m)^{n}-1=(x-1)(x^{n-1}...
2019-10-15 21:14:00
1017
原创 逆元(数论倒数)【密码学笔记】
数论倒数,又称逆元取模对于取模,有一下一些性质:但是唯独除法是不满足的:为什么除法错的呢?很好证明:而对于一些题目,我们必须在中间过程中进行求余,否则数字太大,电脑存不下,那如果这个算式中出现除法,我们就需要逆元了。逆元定义:我们知道,如果a*x = 1,那么x是a的倒数,x = 1/a而在数论问题中,大部分情况都有取模,所以问题就变成...
2019-10-13 13:49:00
1233
原创 替换(代换)密码技术【密码学笔记】
教材《应用密码学》-- 西安电子科技大学出版社概念将明文中的每一个字符均被替换成另一个字符(密文字符),接收者对密文做反向替换就可以恢复出明文。替换密码是基于符号替换的密码技术,以符号的置换来达到掩盖文明信息的目的。1、单字符单表替换密码技术单表单字符的含义是对明文中所有的字符都使用一个固定的映射,即:任何明文加密、密文解密均使用同一个密码表。明文中相同的...
2019-10-11 15:01:00
3962
原创 图论——拓扑排序
一、定义AOV网络 在有向图中,用顶点表示活动,用有向边<Vi, Vj>表示活动 i 是活动 j 的先决条件。这种有向图称为用顶点表示活动的网络(Active on vertices),记作AOV网络。 在AOV网络中,如果活动Vi必须在Vj之前进行,则存在有向边<Vi, Vj>,并称Vi是Vj的直接前驱,Vj是Vi的直接后继。这种前驱与后继的关系具有传递...
2019-09-06 22:32:56
124
原创 C/C++——指针,引用做函数形参
函数中的形参是普通形参的时,函数只是操纵的实参的副本,而无法去修改实参。引用形参是对实参的直接操纵,指针形参是对 它所指向的值(*p) 的直接操纵,但是对于这个指针变量(p)来说,依然只是副本。指针形参 三个形式的形参声明是一样的,形参类型都是 int *:int fun(int *p)int fun(int p[])int fun(int p[10]) 指针做形参...
2018-10-05 09:59:00
34
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人