自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 蓝桥杯2017年省赛

一.迷宫:广搜1.数组清零:memset(flag, 0, sizeof(flag));二.跳蚱蜢:广搜1.广搜一般都要用node;2.储存状态:用string,可以用swap函数;3.状态(string)的去重:用set,insert(),allNode.find(nextStr) == allNode.end();4.记得q.pop();三.魔方状态:广搜广搜:判断是否为广搜(每一步都有一个状态)、状态如何储存、状态如何变化、如何去重;什么时候用深搜,什么时候用广搜:深搜:遍历、求所有

2020-10-11 14:38:22 217

原创 2018-4扩展

1.素数生成算法:输出 n 之内的所有素数利用素数序列判断下一个数是不是素数;(每次加2,保证不是偶数)代码:#include<cstdio>using namespace std;int primes[105];int main() { int n; scanf("%d", &n); primes[0] = 2; primes[1] = 3; int cnt = 2; for(int i = 5; i <= n; i += 2) { int flag

2020-09-29 19:56:43 120

原创 时间复杂度

基本操作执行次数:T(n) = 3n:线性void eat1(int n){ for(int i=0; i<n; i++){; System.out.println("等待一天"); System.out.println("等待一天"); System.out.println("吃一寸面包"); }}T(n) = 5logn:对数void eat2(int n){ for(int i=1; i<n; i*=

2020-09-28 17:38:44 138

原创 蓝桥杯复习线 day2

2018年省赛C++A组:五.画图+递归思路:找到递归三要素:1.递归函数的作用:函数:void draw(char* buf, int w, int x, int y, int size),画出以第Y+1行的第X个为中心的size*size大小的图;2.递归结束条件:size=1,即只画一个;3.如何缩小参数范围:即把size变成1,可以从“如何把第二个拆分成第一个入手”;代码:#include <stdio.h>#include <stdlib.h>void s

2020-09-27 08:47:56 95

原创 蓝桥杯复习线 day1

2018年省赛C++A组:一.算术题;另:1.快速幂:1).递归long long binaryPow(long long a, long long b, long long m) { if(b == 0) return 1; if(b % 2 == 0) { long long mul = binaryPow(a, b / 2, m); return mul * mul % m; } else return binaryPow(a, b - 1, m) * a % m;}2)

2020-09-26 22:10:46 94

原创 《算法笔记》10.2 图的存储

一.邻接矩阵G[i][j] = 点 i 与点 j 之间的边的权值(或由 0/1 表示是否存在);适用于顶点数目不太大(<=1000)的图;二.邻接表Adj[i] 存放顶点 i 的所有出边组成的列表,储存边的终点编号和边权;如何实现:1.链表;2.vector:示例一:vector<int> Adj[N];Adj[1].push_back(3);示例二:struct Node { int v; // 终点编号 int w; //边权 };vector<

2020-05-10 00:25:47 105

原创 《算法笔记》10.1 图的定义和相关术语

1.G(V,E):表示图G的顶点集为V,边集为E;2.顶点的度:和该顶点相连的边的条数;顶点的出度:出边条数;顶点的入度:入边条数;3.点权:顶点的权值;边权:边的权值;

2020-05-09 23:56:52 104

原创 《算法笔记》9.8 哈夫曼树

一.定义叶子节点的带权路径长度:权值 * 根结点到叶子节点的路径长度;树的带权路径长度:所有叶子节点的带权路径长度的和;哈夫曼树:叶子节点的权值一样的树中带权路径长度最小的树;构造哈夫曼树:不断合并两个权值相加最小的元素,直到只剩下一个元素为止;示例:合并果子问题#include<cstdio>#include<queue>using namespace std;priority_queue<long long, vector<long long>

2020-05-09 23:22:55 158

原创 《算法笔记》9.7 堆

一.定义大顶堆:根结点最大的完全二叉树;小顶堆:根结点最小的完全二叉树;(以下以大顶堆为例)用数组的形式定义堆:const int maxn = 100;int n;int heap[maxn];二.基本操作1.建堆:a.向下调整:(将当前结点与它的左右孩子节点比较,按照大小关系交换,若交换则继续与孩子节点比较)void downAdjust(int low, int hi...

2020-05-05 19:10:15 144

原创 《算法笔记》9.6 并查集

一.定义实现:int father[N];father[i] = j; 表示 j 的父亲结点是 i;father[i] = i; 表示元素 i 是该集合的根结点;二.基本操作1.初始化for(int i = 1; i <= n; i++) father[i] = i;2.查找非递归实现:int findFather(int x) { while(x != father[x...

2020-05-05 11:39:52 116

原创 《算法笔记》9.5 平衡二叉树

一.定义平衡因子:左子树和右子树的高度差;平衡二叉树:对任意结点,其平衡因子的绝对值不超过1的二叉查找树;struct node { int v, height; // height:以当前结点为根结点的子树高度 node* lchild; node* rchild;}二.基本操作1.生成新结点:node* newNode(int v) { node* Node = new...

2020-05-04 15:24:48 143

原创 《算法笔记》9.4 二叉查找树

一.定义1.二叉查找树可以是一棵空树;2.左子树所有结点的数据域均小于等于根结点,右子树所有结点的数据域均大于等于根结点;二.基本操作1.查找操作void search(node* root, int x) { if(root == NULL) { printf("search failed\n"); return; } if(x == root->data) pri...

2020-05-03 12:51:19 139 1

原创 浅层复制与深层复制

浅层复制:利用默认复制构造函数,在析构时会出错(因为析构了两遍)深层复制:利用成员函数题目:1.T& operator[](unsigned int i) ;T& operator[](unsigned int i)const; //为什么用 const?DynamicArray<int> iarray(length,-1);DynamicArray...

2020-04-28 22:57:47 229 1

原创 动态内存

程序拥有:1.静态内存;2.栈内存;3.自由空间 / 堆(储存动态分配的对象)一. new 与 delete 运算符1.new 运算符1).动态分配内存new 表达式在自由空间构造一个 int 型(无名)对象,并返回该对象的指针:int *pi = new int;2).初始化对象a.未显式初始化:默认初始化:内置类型或组合类型的值是未定义的,类类型用默认构造函数初始化;int ...

2020-04-28 17:44:40 116

原创 《算法笔记》9.3 树的遍历

一.树的静态写法1.结构体:struct node { typename data; 1.int child[maxn]; //指针域,maxn 为结点上限个数 2.vector child; //防止开辟的空间过大}Node[maxn];2.新建结点:int index = 0;int newNode(int v) { Node[index].data = v; Nod...

2020-04-27 23:18:21 173

原创 《算法笔记》9.2 二叉树的遍历

一.先序遍历根结点——> 左子树——> 右子树void preorder(node* root) { if(root == NULL) return; printf("%d\n", root->data); preorder(root->lchild); preorder(root->rchild);}性质:序列的第一个一定是根结点;二.中序遍历...

2020-04-27 16:16:10 173

原创 《算法笔记》9.1 树与二叉树

一.树的定义与性质1.空树:没有结点的树;2.树的层次:根结点为第一层,根节点子树的根节点为第二层;3.度:结点子树的棵树,叶结点度为0;4.有 n 个结点的树,边数为 n - 1;5.结点的深度:从根结点(深度为1)开始,自顶向下;结点的高度:从叶结点(高度为1)开始,自底向上;二.二叉树的递归定义1.第一种情况:二叉树是空树;第二种情况:二叉树由根节点、左子树、右子树构成;2...

2020-04-26 23:26:11 180 1

原创 《算法笔记》8.2 广度优先搜索

一.广度优先搜索1.基本写法:void BFS(int s) { queue<int> q; q.push(s); while(!q.empty()) { 取出队首元素 top; 访问队首元素 top; 将队首元素出队; 将下一层结点中未曾入队的结点全部入队; }}2.示例一:代码:#include<cstdio>#include&...

2020-04-25 22:48:48 122

原创 《算法笔记》8.1 深度优先搜索

一.深度优先搜索枚举所有完整路径以遍历所有情况;实现方式:递归 / 非递归;示例一:void DFS(int index, int sumW, int sumC) { //终点: if(index == n) return; //不选第 index 件物品: DFS(index + 1, sumW, sumC); //选第 index 件物品: if(w[index] + ...

2020-04-24 22:59:45 144 1

原创 《算法笔记》7.3 链表

一.链表的概念1.分为数据域和指针域:struct node { typename datd; //数据域 node* next; //指针域};2.链表分为带头结点和不带头结点(头结点:data 不存放数据,next 指向第一个数据域有内容的结点);二.为新结点申请动态内存空间1.malloc函数:(C语言)头文件:#include<stdlib.h>;返回类...

2020-04-24 00:03:56 204

原创 《算法笔记》7.1栈

一.定义:后进先出栈顶指针:始终指向栈的最上方元素,栈空时TOP为 -1;二.常见操作(数组实现)1.clear():void clear() { TOP = -1;}2.size():int size() { return TOP + 1;}3.empty():bool empty() { if(TOP == -1) return true; else retur...

2020-04-15 16:33:08 108

原创 《算法笔记》7.2 队列

一.定义:先进先出队列为空时 front = -1,rear = -1;(front指向第一个元素的前一个位置)二.常用操作(数组实现)1.clear():void clear() { front = rear = -1;}2.size()int size() { return rear - front;}3.empty()bool empty() { if(fro...

2020-04-15 16:30:38 118

原创 《算法笔记》6.7 stack

一.stack容器内元素的访问只能通过 top() 来访问栈顶元素;二.常用函数1.push():push(x) 将 x 入栈;2.top();3.pop():pop() 弹出栈顶元素4.empty();5.size();三.常见用途模拟实现递归,防止程序对栈内存的限制而导致运行出错;...

2020-04-15 10:45:40 83

原创 hdoj 2034~2039

1.2034思路转变:我写的是另开一个数组储存答案,其实可以开一个记录数组;2.20353.2036为啥用 abs() 就WA,删除就 AC?4.2037区间贪心,要写对正负号;5.2039数据可能是 double 型;...

2020-04-10 16:15:27 167

原创 《算法笔记》6.5 queue

一.queue 的定义1.头文件;2.命名空间;3.queue 的定义:queue<typename> name;一个先进先出的容器;二.元素的访问只能通过 front() 访问队首元素和 back() 访问队尾元素,示例:for(int i = 1; i < 6; i++) q.push(i);printf("%d %d", q.front(), q.back(...

2020-04-10 13:06:11 99

原创 《算法笔记》6.4 map

一.map 的定义1.用途:可以将任何基本类型(包括STL容器)映射到任何基本类型;2.map 头文件;3.命名空间;4.map 的定义:map<typename1, typename2> mp;<键—,—>值>,数组不能做键值;二.元素的访问1.通过下标访问:和访问普通数组一样(map 中的键是唯一的),示例:map<char, int>...

2020-04-10 12:02:39 202

原创 《C++ Primer》第七章 类

一.定义抽象数据类型(类)1.成员函数:1).声明和定义:成员函数的声明必须在类的内部,定义可在内部可在外部;非成员函数定义和声明都在类的外部;2).引入this:(一定有一个对象在调用成员函数)成员函数通过一个隐式参数 this 来访问调用它的对象(this是常量指针,指向对象);示例一:Sales_data total;total.isbn();当调用 Sales_data ...

2020-04-09 22:24:02 141

原创 《算法笔记》6.2 set

一.set 的定义1.头文件:#include<set>2.命名空间:using namespace std3.定义:set<typename> name;4.定义set 数组:set<typename> Arrayname[arrayzsize]二.set 容器内元素的访问只能通过迭代器访问:set<typename>::iterato...

2020-04-09 10:34:15 118

原创 《算法笔记》6.1 vector

一. vector 的定义1.头文件:#include< vector >2.命名空间:using namespace std;3.定义:vector<typename> name;若 typename 也是一个STL容器,要在> >间加空格,例如:vector<vector<int> > name;4.定义 vector 数组...

2020-04-08 21:25:48 131

原创 《算法笔记》4.7 其他高效技巧和算法

一.打表在程序中一次性计算出所有需要用到的结果,之后可直接取这些结果;二.活用递推正在计算的结果可以通过以前计算的结果得到;三.随机选择算法如何从一个无序的数组中求出第 K 大的数(数组中元素各不相同)代码:int randSelect(int A[], int left, int right, int K) { if(left == right) return A[left];...

2020-04-08 11:02:05 159

原创 《算法笔记》4.6 two pointers

1.PAT B1030思路:若 A[j] <= A[i] * p,则 A[k] <= A[i] * p (i <= k <= j) ,由这个性质引导我们往 two pointers 思想去考虑;第一次循环得到了count1,在第二次循环中,若 j 满足 A[j] <= A[i] * p,则可以继续向右走,得到 count2(>=count1),若不满足,则...

2020-04-07 11:31:50 120

原创 《算法笔记》4.1排序

一.选择排序思路:代码:void selectSort() { for(int i = 1 ; i <= n ; i ++) { int k = i ; for(int j = i ; j <= n ; j ++) { if(A[j] < A[k]) k = j ; } int temp = A[i] ; A[i] = A[k] ; A[k...

2020-04-06 09:18:48 266

原创 《算法笔记》4.5二分

一.二分查找1.在一个有序序列 A 中找出给定数 x 的位置(初始下标区间是 [left , right] )#include<cstdio>using namespace std ;int binarySearch(int A[] , int left , int right , int x) { int mid ; while(left <= right) { ...

2020-04-06 09:18:13 165

原创 《算法笔记》4.4贪心

一.贪心算法考虑当前状态下局部最优(或较优)的策略;二.题目1.PAT B1020注意:1).排名直接体现在数组下标中,无需储存在结构体中;代码:#include<cstdio>#include<algorithm>using namespace std ;struct mooncake { double store ; double sell ;...

2020-04-03 10:11:18 191

原创 《算法笔记》4.3递归

1.全排列:方法一:#include<cstdio>using namespace std ;int n , P[11] ;void generateP(int index) { if(index == n) { for(int i = 0 ; i < n ; i ++) printf("%d",P[i]) ; printf("\n") ; } else ...

2020-04-01 23:26:51 132

原创 《算法笔记》4.2散列

一.整数的散列把输入的数作为数组下标来对这个数的性质进行统计;示例1:#include<cstdio>const int maxn = 100010 ;bool hashTable[maxn] = {false} ;int main() { int n , m , x ; scanf("%d%d",&n,&m) ; for(int i = 0 ; i ...

2020-04-01 15:10:44 186

原创 刷题:BFS

BFS的过程:1.建图:邻接矩阵(二维数组)或邻接表(多个一维数组)2.BFS搜索框架:#include<cstdio>#include<cstring>#include<queue>#include<algorithm>using namespace std;const int maxn=100;bool vst[maxn][ma...

2020-03-21 23:20:01 92

原创 刷题:动态规划(三)

1.LeetCode1130注意:1).写循环条件时:错误写法:for(int i = 0 ; i + 2 < size ; i ++) { for(int j = i + 2 ; j < size ; j ++) { dp[i][j] = 1<<30 ; for(int k = i ; k < j ; k ++) dp...

2020-03-20 16:17:10 843

原创 刷题:动态规划(一)

983.最低票价650.只有两个键的键盘1049

2020-03-18 15:37:55 86

原创 Python与Tensorflow安装指南

一.安装python1.搜索python官方网站或者华军软件园下载python安装包,得到.exe文件,会弹出如下界面,记得勾选“Add Python 3.7 to PATH”的选项(图片上显示的是Python3.7,当前python最新版本是3.8,所以下载的是Python3.8);2.点击Install Now直接安装在选定的C盘中,点击Customize installation则会出...

2020-03-11 12:05:55 1451

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除