
算法笔记练习
woowmom
这个作者很懒,什么都没留下…
展开
-
二分答案二分
二分答案 找到一个范围, 用二分法枚举,判断是否符合条件, 再选择最满意的答案 1.跳石头, 最短间隔距离的最大值, 输入格式 输入第一行包含三个整数 LLL,NNN,MMM,分别表示起点到终点的距离,起点和终点之间的岩石数,以及组委会至多移走的岩石数。 接下来 NNN 行,每行一个整数,第 iii 行的整数 Di(0<Di<L)Di(0 < Di < L)Di(0<Di<L) 表示第 iii 块岩石与 起点的距离。这些岩石按与起点距离从小到大的顺序给出,且不原创 2021-08-19 11:07:03 · 108 阅读 · 1 评论 -
2021-08-18
前缀和,差分定义例题 定义 一维前缀和 s[r]=1 + 2 + 3 +…+ l-1 + l + … + r; s[r] - s[l-r] = a[l] + … + a[r]; 二维前缀和 s[i, j] = 第i行j列格子左上部分所有元素的和 以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵的和为: s[x2, y2] - s[x1-1][y2] - s[x2][y1-1] + s[x1-1][y1-1]; 一维差分 给区间[l, r]中的每个数加上c: s[l]+=c, s[r+1原创 2021-08-18 19:56:53 · 97 阅读 · 0 评论 -
--二叉树
二叉树基础知识存储新建一个结点查找并修改一个或多个插入一个节点创建二叉树四种遍历利用遍历重建二叉树 基础知识 存储 #include<iostream> #include<cstdio> #include<queue> using namespace std;//二叉树结点 struct node { int data;//数据域 node* lchild;//左子树 node* rchild;//右子树 }; 新建一个结点 node * new原创 2021-08-13 14:08:16 · 97 阅读 · 0 评论 -
静态链表相关
/* 静态链表 */ #include<cstdio> #include<cstring> const int M = 10010; struct NODE { char data; int next; bool flag; }node[M]; int main() { for(int i=0;i< M;i++) node[i].flag = false; int s1, s2, n; scanf("%d%d%d原创 2021-08-12 09:50:44 · 101 阅读 · 0 评论 -
动态链表相关
/* 链表 */ #include<stdio.h> #include<stdlib.h> int main() { //分配内存 int * p = (int*)malloc(sizeof(int*)); free(p); int * p = new int; delete(p); return 0; }; struct node {//链表结点 int data; node* next; }; node* cre原创 2021-08-12 09:49:16 · 71 阅读 · 0 评论 -
--并查集
``#include using namespace std; const int N = 1e5 + 10; int p[N]; int find(int x) { if (x == p[x]) return x; else return find(p[x]); } int main() { int n,m; cin>>n>>m; for (int i = 1; i <= m; i++) p[i] = i; char ch[10]; while(n–) { } return原创 2021-07-21 22:33:47 · 128 阅读 · 0 评论