- 博客(221)
- 收藏
- 关注
原创 各种内排序汇总
文章目录八、排序8.1 排序的基本概念8.2 插入排序8.2.1 直接插入排序8.2.2 折半插入排序8.2.3 希尔排序8.3 交换排序8.3.1 冒泡排序8.3.2 快速排序8.4 选择排序8.4.1 简单选择排序8.4.2 堆排序8.5 归并排序8.6 基数排序8.7 内排序的比较及应用8.8 examples八、排序8.1 排序的基本概念排序,就是重新排列表中的元素,使表中的元素满足按关键字有序的过程。为了查找方便,通常希望计算机中的表是按关键字有序的。确切定义:输入n个记录 R1,R
2021-01-17 19:38:18
454
原创 查找(线性查找 B树 散列表)
文章目录七、查找7.1 查找的基本概念7.2 顺序查找7.3 折半查找7.4 分块查找7.5 B树和B+树7.5.1 B树及其基本操作7.5.1.1 B树的高度7.5.1.2 B树的查找7.5.1.3 B树的插入7.5.1.4 B树的删除7.5.2 B+树的基本概念7.6 散列表7.6.1 散列表的基本概念7.6.2 散列函数的构造方法7.6.3 处理冲突的方法7.6.4 散列查找及性能分析七、查找7.1 查找的基本概念查找。数据集合中寻找满足某种条件的数据元素的过程。结果一般分为两种:查找成功和查
2021-01-17 19:37:39
331
原创 图(图的存储 图的遍历 图的应用 AOV网 AOE网)
文章目录六、图6.1 图的基本概念6.1.1 图的定义6.1.2 图的存储6.1.2.1 邻接矩阵6.1.2.2 邻接表6.1.2.3 十字链表6.1.2.4 邻接多重表6.1.3 图的基本操作6.2 图的遍历6.2.1 广度优先搜索 BFS6.2.2 深度优先搜索 DFS6.3 图的应用6.3.1 最小生成树6.3.1.1 Prim算法6.3.1.2 Kruskal算法6.3.2 最短路径6.3.2.1 Dijkstra算法6.3.2.2 Floyd算法6.3.2.4 拓扑排序 - AOV网6.3.2.5
2021-01-17 19:36:46
504
原创 树、二叉树(下)(森林 二叉排序树 平衡二叉树 哈夫曼树和哈夫曼编码)
文章目录5.6 森林5.6.1 树的存储结构5.6.1.1 双亲表示法5.6.1.2 孩子表示法5.6.1.3 孩子兄弟表示法5.6.2 树、森林与二叉树的转换5.6.3 树和森林的遍历5.6.4 并查集5.7 二叉排序树5.7.1 二叉排序树的定义5.7.2 二叉排序树的查找5.7.3 二叉排序树的插入5.7.4 二叉排序树的构造5.7.5 二叉排序树的删除5.7.6 二叉排序树的查找效率分析5.8 平衡二叉树5.8.1 平衡二叉树的定义5.8.2 平衡二叉树的插入5.8.2.1 LL平衡旋转(右单旋转)
2021-01-17 19:36:07
521
原创 树、二叉树(上)(二叉树的遍历 线索二叉树)
文章目录五、树、二叉树5.1 树5.1.1 树的基本概念5.1.2 树的基本术语5.1.3 树的性质5.2 二叉树5.2.1 二叉树定义和特性5.2.2 特殊二叉树5.2.3 二叉树的性质5.2.4 二叉树的存储结构5.2. examples - 15.3 二叉树的遍历5.3.1 先序遍历5.3.2 中序遍历5.3.3 后序遍历5.3.4 三种遍历总结5.3.5 非递归算法5.3.5.1 中序遍历非递归实现5.3.5.2 先序遍历非递归实现5.3.5.3 后序遍历非递归实现5.3.6 层次遍历5.3.7 由
2021-01-17 19:35:28
321
原创 串(模式匹配 KMP 算法)
文章目录四、串4.1 串的定义4.2 串的存储结构4.3 串的基本操作4.4 串的模式匹配4.4.1 简单模式匹配算法4.4.2 改进的模式匹配算法 - KMP4.4.2.1 改进方向4.4.2.2 最长相等前后缀4.4.2.3 next 数组4.4.2.5 KMP代码部分4.4.2.6 next函数进一步优化 - nextval四、串4.1 串的定义字符串简称串。串(String)是由零个或多个字符组成的有限序列,一般记为 S=′a1a2...an′ (n≥0)S
2021-01-17 19:34:41
393
原创 栈、队列、特殊矩阵
文章目录三、栈、队列、矩阵3.1 栈3.1.1 顺序栈3.1.2 共享栈3.1.3 链栈3.1.4 example3.2 队列3.2.1 顺序存储3.2.2 循环队列3.2.3 链式存储3.2.4 双端队列3.2.5 example3.2.6 队列在计算机系统中的应用3.3 特殊矩阵三、栈、队列、矩阵3.1 栈栈是只允许在一端进行插入或删除操作的线性表。首先栈是一种线性表,但限定这种线性表只能在一端进行插入和删除操作。栈顶(Top) - 允许插入删除的一端栈底(Bottom) - 固定的,不允许插
2021-01-17 19:34:01
248
原创 线性结构(顺序表 链表 双指针法总结)
文章目录二、线性结构2.1 线性表的定义2.2 顺序表2.2.1 顺序表2.2.2 examples - 12.3 链式表示2.3.1 单链表2.3.2 双链表2.3.3 循环链表2.3.4 静态链表2.3.5 双指针法合集2.3.6 examples - 22.4 顺序表和链表的比较二、线性结构2.1 线性表的定义线性表是具有相同数据类型的n(n≥0)n(n \geq 0)n(n≥0)个数据元素的有限序列,n为表长。n=0n=0n=0时线性表是一个空表。若用L命名线性表,一般表示为: L=(a1,
2021-01-17 19:33:12
333
原创 数据结构绪论(基本概念 复杂度)
文章目录一、绪论1.1 数据结构的基本概念1.2 算法和算法评价一、绪论一个程序应该包含两个方面的内容:对数据的描述:数据结构(data structure)对操作的描述:算法(algorithm)计算机科学家沃斯提出一个公式:数据结构 + 算法 = 程序完整的程序设计应该是:数据结构 + 算法 + 程序设计方法 + 语言工具广义地说,为解决一个问题而采取的方法和步骤,称为“算法”。计算机算法可以分为两大类别:数值运算算法:求数值解,例如求方程的根、函数的定积分等。非数值计算:如图
2021-01-17 19:32:39
160
原创 D3 - 动态图绘制(详解)(D3.v5)
文章目录1. 再谈“数据绑定”1.1 选择元素1.2 添加、插入和删除1.3 数据绑定2. 过渡效果2.1 过渡启动2.2 过渡属性3. 定时器4. 简单动画制作4.1 动态绘制circle4.2 动态绘制rect1. 再谈“数据绑定”1.1 选择元素D3中,选择元素的函数有两个select和selectAll,两种方法都很常用,select返回匹配选择器的第一个元素,而selectAll返回匹配选择器的所有元素。选择所需元素的方法:d3.select("body"); //选择body元素d3
2020-06-02 18:00:34
2431
原创 Java 爬虫,利用HttpClient爬取网页内容
直接给出代码。该代码可以直接获取网页全部内容,且能够很好解决中文的乱码问题。 //获取url 返回字符串 解决中文乱码问题 public static String Gget(String url1) { CloseableHttpClient httpclient = HttpClients.createDefault(); String context = ""; try { URL url = new URL(url1
2020-05-08 18:16:12
755
原创 D3 - 动态条形图制作
数据来自csv文件。绘制效果图:数据集解释:数据信息为美国六个主要城市每个月的光照时间变化。代码详细解释:let Color = new Array(); // 随机生成每个城市的代表颜色 for (let i = 0; i < 6; ++i) { Color[i] = 'rgba(' + Math.random() * 255 + ',' + M...
2020-05-07 16:03:59
1517
2
原创 Windows C++程序对拍
此前写过Ubuntu下的程序对拍:https://blog.csdn.net/moon_sky1999/article/details/100353519对拍是一种很好的纠错手段,特别是在算法竞赛中,通过对拍,可以得到有效的Debug的数据。对拍的基本原理大概如下:自己手写一个完全暴力的程序(一定要确保该代码的正确性,该代码是对拍的基础),利用这份暴力代码,与自己写的代码运行同样的数据,对比二者...
2020-03-30 17:04:18
262
原创 D3 -折线统计图
数据来自csv文件。绘制效果图:图片一共由几个部分构成:横纵两个坐标轴,横轴为月份编号,纵轴是光照时间。中间主体部分是折线,由svg的Path绘制,其中数据坐标点为svg的circle元素。右上部分是图例,代表不同颜色代表的城市信息,城市纬度。颜色深浅程度代表纬度的高低。 // 构造比例尺 xScale = d3.scaleLinear() .dom...
2020-03-30 15:42:20
531
2
原创 D3 - 箱型图
箱型图(Boxplot)箱型图概念解释:https://blog.csdn.net/aijiudu/article/details/89387328箱型图,是一种用于显示一组数据分散情况资料的统计图,即每一个box表示的是一组数据。通常采用五个数值来概括这一组数据,即:中位数Q2Q2Q2,下四分位数Q1Q1Q1,上四分位数Q3Q3Q3,上限和下限。其中,Q2={a(n+1)/2,odda...
2020-03-26 11:17:48
958
4
原创 D3 - 平行坐标系
平行坐标系的介绍:http://www.zhaiqianfeng.com/2016/09/parallel-coordinates.html平行坐标系是用来解决同时展示多个坐标轴的数据集的可视化问题。平行坐标系是被广泛使用的可视化技术之一,是分析多维数据的强有力的工具。这里我在做的时候采用了最简单的方法制作的,即创建多个等长的比例尺,然后等距竖向排列在svg画布中,再用一条一条的折线将其连接起...
2020-03-17 20:59:41
1430
2
原创 D3 - 绘制散点图
D3绘制散点图效果图数据来自:https://www.worldbank.org/完整代码(不含Initialize初始化数据的函数):<script src="https://d3js.org/d3.v5.js"></script><script> let w = window.innerWidth || document.documen...
2020-03-17 16:30:15
572
原创 D3 - 绘制条形统计图
D3绘制简单条形统计图效果图:(图中箭头出表示鼠标位置,交互显示位置处的矩形)完整代码:<body><script src="https://d3js.org/d3.v5.js"></script><script> let w = window.innerWidth || document.documentElement.cl...
2020-03-08 21:13:39
793
原创 D3 - 基础篇
D3 - API手册:https://github.com/d3/d3/wiki/API–%E4%B8%AD%E6%96%87%E6%89%8B%E5%86%8CD3 - v5学习:https://blog.csdn.net/qq_34414916/category_7608878.htmlD3 全称:Data-Driven-Documents前置:HTML - 超文本标记语言,用于设计网...
2020-03-07 20:50:12
259
原创 cf 1245D (Java Kruskal - Prim算法实现)
生成树题目。Prim或是Kruskal均可。Kruskal代码:import java.io.*;import java.lang.*;import java.rmi.*;import java.security.*;import java.util.*;import java.math.*;public class D { static BufferedReader ...
2019-11-02 20:52:35
122
原创 AtCoder - 1983 BBQ Hard
题意给你n个数对(ai,bi)(a_i,b_i)(ai,bi),代表第i个包裹中两种物品分别有ai,bia_i,b_iai,bi个。第i个包裹中有第i种针。每次取两个包裹i,ji,ji,j。那么一共有ai+aja_i+a_jai+aj种物品1,有bi+bjb_i+b_jbi+bj种物品2。将所有物品排成一列,串在i,j两个针上,形成一个烤串。询问有多少种靠串的类型,不同的针视为...
2019-10-23 21:41:48
97
原创 6 其它问题
6 其它问题6.1 星期计算只适用于1582年之后的日期。计算星期几的公式:int Day(int y, int m, int d) { if (m == 1 || m == 2) { m += 12; --y; } return (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 +...
2019-10-23 19:00:59
89
原创 5 动态规划
5 动态规划5.1 常见线性模型5.1.1 LIS(O(nlogn))采用树状数组优化。int c[maxn], n, r[maxn], a[maxn]; inline int lb(int x) { return x & -x; } int query(int x) { int tot = 0; for (; x; x -= lb(x)) ...
2019-10-23 18:59:52
337
原创 4 数据结构
4 数据结构4.1 树状数组4.1.1 普通树状数组仅支持单点修改区间查询。const int maxn = 1e5 + 10;int tree[maxn];int lb(int x) { return x & -x; }int read(int x) { int tot = 0; for (int i = x; i; i -= lb(i)) { ...
2019-10-23 18:58:51
135
原创 2. 图论
2. 图论2.1 Tarjan2.1.1 割点int n, m;int head[maxn], cnt, dfn[maxn], low[maxn];struct node { int next, to;} e[maxn * 2];bool vis[maxn], cut[maxn];void ins(int u, int v) { e[++cnt].to = v;...
2019-10-23 18:57:53
193
原创 1.数学
文章目录*1.数学**1.1矩阵**1.1.1高斯消元**1.1.2矩阵快速幂**1.2整除与剩余**1.2.1欧几里得算法**1.2.2扩展欧几里得算法**1.2.3*线性乘法逆元1.3素数**1.3.1素数筛法**1.3.2素数判定**1.3.3质因数分解**1.4欧拉函数**1.4.1计算欧拉函数**1.4.2筛法构造欧拉函数表**1.5其他**1.5.1快速幂**1.5.2 卢卡斯定理**...
2019-10-23 18:56:39
129
原创 0.Java & C++
文章目录*0.Java & C++**0.1Java快速I/O**0.1.1个人常用模板**0.1.2 CF上的快速I/O(速度最快???)**0.1.3Petr的快速IO**0.1.4 常用快速IO**0.2 C++ STL**0.2.1 lower_bound&upper_bound**0.2.2 priority_queue**0.2.3 set**0.2.4 map**0....
2019-10-23 18:55:02
176
原创 LuoguP1131
题意给你一棵有根树,每条边都有一个全值。有一种操作,可以让某条边的权值+1。问最少操作多少次,可以让根到所有叶子节点的路径长度都相等。思路首先能够想到的是,最终所有路径都是初始时路径最长的长度。而且,对于每一棵子树,对其离根越近的边使用该操作一定会比对子树中的边使用更加合算。所以对于条边,可以加的权值的最大值为,子树的叶子中路径最大的值,离最终答案的差值。可以用dfs+线段树维护子树中的最...
2019-10-07 20:09:19
120
原创 LuoguP2279
题意:给你一棵树,选树上最少的点将整棵树覆盖。选的点可以覆盖距离为2以内的所有点。思路:贪心策略,每次选择没被覆盖的点里的深度最深的点,选其父亲的父亲的节点进行覆盖操作。代码:#include <bits/stdc++.h>using namespace std;#define ll long long#define __ ios::sync_with_stdio(0);...
2019-10-05 15:37:11
88
原创 博弈问题(实时更新)
文章目录0. 参考文章1. 平等博弈1.1 常见概念及定理1.1.1 组合游戏1.1.2 P状态与N状态0. 参考文章https://blog.csdn.net/weixin_38686780/article/details/82940573https://www.zhihu.com/question/274676171. 平等博弈1.1 常见概念及定理1.1.1 组合游戏公平组合游...
2019-10-04 09:49:31
287
原创 HDU - 2993 (读入优化)
题意给你n个数和一个数字k,要求所有长度≥k\geq k≥k的所有连续子序列中,平均值最大的值。思路设数组s[i]s[i]s[i]代表序列的前缀和,所求的平均值即为s[i]−s[j]i−j(i−j≥k)\frac{s[i]-s[j]}{i-j} (i-j\geq k)i−js[i]−s[j](i−j≥k)这个值即是直线s[i]=i∗k+bs[i]=i*k+bs[i]=i∗k+b的斜率。...
2019-09-19 20:23:08
165
原创 HDU 2829 (二维斜率优化)
题意给你长度为n的序列,可以切m刀将序列切成m+1个子段。每个子段的价值为子段中任意两个数的乘积的总和,让总价值最小。思路定义数组s[i]=∑a[i]s[i]=\sum a[i]s[i]=∑a[i],数组e[i]=∑a[i]2e[i]=\sum a[i]^2e[i]=∑a[i]2。定义状态f[i][k]f[i][k]f[i][k]代表前i个数,且k刀的最小价值。可以这样转移f[i][k]...
2019-09-05 21:39:13
179
原创 HDU 3507 (斜率优化入门题)
题意给出N个单词,每个单词有个非负权值ai,现在要将它们分成连续的若干段,每段的代价为此段单词的权值和的平方,还要加一个常数M,即(∑i=1kai)2+M(\sum_{i=1}^{k}ai)^2+M(∑i=1kai)2+M。现在想求出一种最优方案,使得总费用之和最小。思路经典题型。数组s表示权值的前缀和,数组f表示前i个单词分组的最小代价。可以列出方程f[i]=min{(s[i]−s[...
2019-09-05 14:35:33
316
原创 HDU 3405
题意给你n个数,将这些数分成若干组,每组数最少t个。分一个组的代价为这一组中所有数与该组中最小值的差值总和。求最小代价。思路思路来自:https://www.cnblogs.com/hua-dong/p/7818231.html简化问题。首先每一组的元素大小一定是相近的,可以对数组进行排序,排序后的数组分成的组一定都是连续的段。接下来就可以进行dp。数组s表示排序后数组的前缀和,数组a表...
2019-09-05 14:08:50
127
原创 2019 ICPC 南京网络赛D - Robots
link:https://nanti.jisuanke.com/t/41301思路link:https://blog.csdn.net/weixin_43394931/article/details/100513821题意给出一个n个点的DAG,起点保证为1,终点保证为n,在每一个点,每一天有等概率走向其相邻的点或是停在原点。在第i天的损耗值为i,求走到终点的期望损耗值。思路定义两个数组...
2019-09-04 13:36:45
267
原创 OpenGL 学习(一)
常用函数使用:glClear、glColor4f、glClearColor:传送门glBegin:传送门glVertex:传送门glutInit:传送门glutInitDisplayMode:传送门glutInitWindowPosition:传送门glutDisplayFunc:传送门glutReshapeFunc、glViewport:传送门回调函数:传送门实验:绘制外圆...
2019-09-03 20:18:35
168
原创 Ubuntu C++程序对拍
创建文件夹,以/duipai为例。文件夹中放4个cpp文件。A/A.cpp和B/B.cpp分别为标程(暴力)和源文件。data/data.cpp为数据生成文件。duipai/duipai.cpp表示对拍文件。A和B的源代码中都应打开data.out作为读入文件,分别以std.out和test.out作为输出文件。注意linux下文件路径应为绝对路径。duipai.cpp中代码如下#i...
2019-09-02 19:14:23
206
原创 Ubuntu Clion 配置OpenGL
在主源代码中调用#include <GL/glut.h>需要配置cmake,如下。工程名称为test,需要替换,主源代码为main.cppcmake_minimum_required(VERSION 3.14)project(test)find_package(OpenGL REQUIRED)include_directories(${OPENGL_INCLUDE_DI...
2019-09-02 12:56:58
341
原创 UVALive - 7342
怎么说呢。这道题其实是道水题,但一开始思路错了,纠正了两次还是没有回到正轨上,最终与AC无缘。后来队友将其转成二维平面上的点,用一种形状比较奇怪的六边形去覆盖所有点,这样处理起来其实更麻烦。对于每一个六边形,一定会有一个中心和一个半径。我们可以先确定最终需要的正六边形的半径,然后判断是否存在中心。半径的长度可以二分,然后如何去check。我们可以假想成一共有三个轴x,y,zx,y,zx,y,z...
2019-08-19 11:05:47
135
原创 codeforces 1161C Thanos Nim
思维型博弈。题意:Alice和Bob互相取石子,每次选择恰好n/2n/2n/2堆,从每一堆里取至少一个,第一个不能完成取的算为输。思路:构造一种能够把对方气死的方案。我们先考虑这些情况:1 1 1 1 1 1时一定是后手必胜。(显然)1 1 1 1 1 2 时也是后手必胜。(也是显然)但1 1 1 2 2 2 就成了先手必胜,因为可以一次取到1 1 1 1 1 1的情况。然后1 1 ...
2019-08-18 21:39:39
183
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人