摘要: P2871 [USACO07DEC]Charm Bracelet S #include<iostream> using namespace std; long long dp[12881]; int D[3500],W[3500]; int main() { int N,M; cin>>N>>M; 阅读全文
posted @ 2022-03-21 08:22 心悟&&星际 阅读(28) 评论(0) 推荐(0) 编辑
摘要: P2925 [USACO08DEC]Hay For Sale S #include<iostream> using namespace std; long long dp[50001]; int h[5001]; int main() { int C,H; cin>>C>>H; for (int i 阅读全文
posted @ 2022-03-21 08:21 心悟&&星际 阅读(22) 评论(0) 推荐(0) 编辑
摘要: P1802 5 倍经验日 #include<iostream> #include<cstring> using namespace std; const int Maxn=1100; long long dp[Maxn],lose[Maxn],win[Maxn],used[Maxn]; long l 阅读全文
posted @ 2022-03-21 07:15 心悟&&星际 阅读(16) 评论(0) 推荐(0) 编辑
摘要: P1877 [HAOI2012]音量调节 #include<cstdio> using namespace std; int n,begin,maxlevel; int ans; int a[51]; bool f[51][1001]; int main() { scanf("%d%d%d",&n, 阅读全文
posted @ 2022-03-21 07:10 心悟&&星际 阅读(29) 评论(0) 推荐(0) 编辑
摘要: P1510 精卫填海 #include<iostream> using namespace std; long long dp[45001]; int s[10001],t[10001]; int main() { int v,n,c; cin>>v>>n>>c; for (int i=1;i<=n 阅读全文
posted @ 2022-03-21 07:06 心悟&&星际 阅读(29) 评论(0) 推荐(0) 编辑
摘要: P1048 [NOIP2005 普及组] 采药解法一 #include<iostream> #include<cstring> using namespace std; const int Maxn=110; const int Maxv=1010; int V,n,ans=0; int w[Max 阅读全文
posted @ 2022-03-21 07:03 心悟&&星际 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 01背包给定 n 件物品,物品的重量为 w[i],物品的价值为 c[i]。现挑选物品放入背包中,假定背包能承受的最大重量为 V,问应该如何选择装入背包中的物品,使得装入背包中物品的总价值最大?搜索算法状态i表示考虑第i件物品,v表示当前背包重量,C表示当前最大价值。dfs(i,v,C)调用方式dfs 阅读全文
posted @ 2022-03-21 06:58 心悟&&星际 阅读(54) 评论(0) 推荐(0) 编辑
摘要: P3391 【模板】文艺平衡树splay解法1 #include <bits/stdc++.h> using namespace std; const int N = 100005; int ch[N][2], par[N], val[N], cnt[N], size[N], rev[N], roo 阅读全文
posted @ 2022-03-20 07:57 心悟&&星际 阅读(35) 评论(0) 推荐(0) 编辑
摘要: P3369 【模板】普通平衡树 #include <bits/stdc++.h> using namespace std; const int N = 200005; int ch[N][2], par[N], val[N], cnt[N], size[N], ncnt, root; bool ch 阅读全文
posted @ 2022-03-20 07:49 心悟&&星际 阅读(73) 评论(0) 推荐(0) 编辑
摘要: P3369 【模板】普通平衡树 #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #define lc ch[p][0] #define rc ch[p][1] using namespace std; 阅读全文
posted @ 2022-03-20 07:39 心悟&&星际 阅读(20) 评论(0) 推荐(0) 编辑
摘要: P4447[AHOI2018初中组]分组 #include<bits/stdc++.h> using namespace std; map<int,int> m; int ans=101000; void rule(int n) { while(n>0) { int tj=0; map<int,in 阅读全文
posted @ 2022-03-19 19:38 心悟&&星际 阅读(51) 评论(0) 推荐(0) 编辑
摘要: P3985 不开心的金明 #include<iostream> #include<map> using namespace std; int w[101],v[101]; map<int,map<int,int> > dp; int n,W; long long dfs(int i,int zl) 阅读全文
posted @ 2022-03-19 18:32 心悟&&星际 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 数据结构定义 typedef struct BiTNode { ElemType data; //数据域 ChildPtr *lchild,*rchild; //左右孩子的指针域 //可以开个指针域指向双亲,变为三叉链表 }BiTNode, *BiTree; 第一种:已知前序遍历、中序遍历求后序遍历 阅读全文
posted @ 2022-03-18 10:53 心悟&&星际 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 数据结构定义 typedef struct BITNode{ int data; int bf; int cnt; struct BITNode *lchild,*rchild; }BITNode,*BITree; 左旋 void L_Rotate(BITree &T) { BITree tmp; 阅读全文
posted @ 2022-03-18 10:04 心悟&&星际 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 数据结构定义 struct node{ int data;//结点的内容 int left;//左子树 int right;//右子树 int cnt; int size; } Bst[100100]; queue<int> sq; int root=0; int tot=0; 更新子树大小:等于左 阅读全文
posted @ 2022-03-18 09:55 心悟&&星际 阅读(29) 评论(0) 推荐(0) 编辑
摘要: #include<iostream> #include<cstdio> using namespace std; const int Maxn=10000000; int tr[2*Maxn+10]; int lowbit(int x) { return x&(-x); } void add(int 阅读全文
posted @ 2022-03-17 23:17 心悟&&星际 阅读(28) 评论(0) 推荐(0) 编辑
摘要: #include<bits/stdc++.h> #define INF INT_MAX using namespace std; const int maxn=100010; int sum=0,R=0; int sz[maxn],v[maxn],num[maxn],rd[maxn],son[max 阅读全文
posted @ 2022-03-17 23:14 心悟&&星际 阅读(22) 评论(0) 推荐(0) 编辑
摘要: #include<bits/stdc++.h> using namespace std; const int N=10000010; int T[N<<3]; void update(int p,int v,int rt,int l,int r) { T[rt]+=v; if (l==r) retu 阅读全文
posted @ 2022-03-17 23:09 心悟&&星际 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 替罪羊树——简单粗暴的数据结构正题如果在一棵平衡的二叉搜索树内进行查询等操作,时间就可以稳定在log(n),但是每一次的插入节点和删除节点,都可能会使得这棵树不平衡,最坏情况就是退化成一条链,显然我们不想要这种树,于是各种维护的方法出现了,大部分的平衡树都是通过旋转来维护平衡的,但替罪羊树就很厉害了 阅读全文
posted @ 2022-03-17 23:02 心悟&&星际 阅读(41) 评论(0) 推荐(0) 编辑
摘要: Splay简易教程 百度百科伸展树(Splay Tree),也叫分裂树,是一种二叉排序树,它能在O(log n)内完成插入、查找和删除操作。它由丹尼尔·斯立特Daniel Sleator 和 罗伯特·恩卓·塔扬Robert Endre Tarjan 在1985年发明的。在伸展树上的一般操作都基于伸展 阅读全文
posted @ 2022-03-16 21:14 心悟&&星际 阅读(179) 评论(0) 推荐(0) 编辑
摘要: AVL树在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者G. M. Adelson-Velsky和E. M. Landis,他们在1962 阅读全文
posted @ 2022-03-15 08:52 心悟&&星际 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 红黑树红黑树在AVL树“适度平衡”的基础上,进一步放宽条件:红黑树的左右子树高度差绝对值不超过两倍。红黑树也是一种平衡二叉搜索树,虽然和AVL树一样,查找、插入和删除的时间复杂度均为O(logn),但是其统计性能更好一些,任何不平衡都可以在3次旋转之内解决。因此红黑树被广泛应用,例如在C++ STL 阅读全文
posted @ 2022-03-14 11:34 心悟&&星际 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 一、递归的基本概念一个函数、概念或数学结构,如果在其定义或说明内部直接或间接地出现对其本身的引用,或者是为了描述问题的某一状态,必须要用至它的上一状态,而描述上一状态,又必须用到它的上一状态……这种用自己来定义自己的方法,称之为递归或递归定义。在程序设计中,函数直接或间接调用自己,就被称为递归调用。 阅读全文
posted @ 2022-03-13 20:13 心悟&&星际 阅读(308) 评论(0) 推荐(0) 编辑
摘要: FloodFill算法啥是 FloodFill 算法呢,最直接的一个应用就是「颜色填充」,就是 Windows 绘画本中那个小油漆桶的标志,可以把一块被圈起来的区域全部染色。这种算法思想还在许多其他地方有应用。比如说扫雷游戏,有时候你点一个方格,会一下子展开一片区域,这个展开过程,就是 FloodF 阅读全文
posted @ 2022-03-13 15:23 心悟&&星际 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 图的广度优先遍历1、广度优先搜索遍历过程图的广度优先搜索(Depth First Search),和树的层次遍历比较类似。它的思想:类似于一个分层搜索的过程,广度优先遍历需要使用一个队列以保持访问过的结点的顺序,以便按这个顺序来访问这些结点的邻接结点。示例 对图7-25连通无向图采用广度优先搜索遍历 阅读全文
posted @ 2022-03-13 15:21 心悟&&星际 阅读(361) 评论(0) 推荐(0) 编辑
摘要: P3916 图的遍历 #include<iostream> #include<cstdio> #include<vector> #include<algorithm> #include<queue> #include<cstring> #include<string> using namespace 阅读全文
posted @ 2022-03-13 15:14 心悟&&星际 阅读(16) 评论(0) 推荐(0) 编辑
摘要: P1807 最长路 #include<iostream> #include<cstdio> #include<vector> #include<algorithm> #include<queue> #include<cstring> #include<string> using namespace 阅读全文
posted @ 2022-03-13 15:11 心悟&&星际 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 图论中基本的深度与广度遍历,注意在遍历中如何保证先遍历编号小的结点。 #include<iostream> #include<cstdio> #include<vector> #include<algorithm> #include<queue> #include<cstring> using na 阅读全文
posted @ 2022-03-13 15:03 心悟&&星际 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 图的深度优先遍历1、深度优先搜索遍历过程图的深度优先搜索(Depth First Search),和树的先序遍历比较类似。它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通的顶点都被 阅读全文
posted @ 2022-03-13 09:31 心悟&&星际 阅读(492) 评论(0) 推荐(0) 编辑
摘要: 图的存储结构邻接矩阵——表示顶点间相连关系的矩阵设图G有n (n≥1) 个顶点,则邻接矩阵是一个n阶方阵。 当矩阵中的 [i,j] !=0(下标从1开始) ,代表其对应的第i个顶点与第j个顶点是连接的。 特点: 无向图的邻接矩阵是对称矩阵,n个顶点的无向图需要n*(n+1)/2个空间大小有向图的邻接 阅读全文
posted @ 2022-03-13 09:24 心悟&&星际 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 图的基本概念图的定义图G由顶点集V和边集E组成,记为G=(V,E),其中V(G)表示图G中顶点的有限非空集;E(G)表示图G中顶点之间的关系(边)的集合,至于连线的长度与结点的位置是无关紧要的。注意:线性表可以是空表,树可以是空树,图不可以是空图,图可以没有边,但是至少要有一个顶点。1.有向图若E是 阅读全文
posted @ 2022-03-13 09:16 心悟&&星际 阅读(545) 评论(0) 推荐(0) 编辑
摘要: Johnson 全源最短路径算法Johnson 和 Floyd 一样,是一种能求出无负环图上任意两点间最短路径的算法。该算法在 1977 年由 Donald B. Johnson 提出。任意两点间的最短路可以通过枚举起点,跑 次 Bellman-Ford 算法解决,时间复杂度是O(n2m) 的,也可 阅读全文
posted @ 2022-03-13 08:25 心悟&&星际 阅读(320) 评论(0) 推荐(0) 编辑
摘要: Floyd - Warshall(弗洛伊德算法)简介:Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。Floyd - Warsh 阅读全文
posted @ 2022-03-13 08:16 心悟&&星际 阅读(694) 评论(0) 推荐(0) 编辑
摘要: SPFA算法是求解单源最短路径问题的一种算法,由理查德·贝尔曼(Richard Bellman) 和 莱斯特·福特创立的。有时候这种算法也被称为 Moore-Bellman-Ford 算法,因为 Edward F. Moore 也为这个算法的发展做出了贡献。它的原理是对图进行V-1次松弛操作,得到所 阅读全文
posted @ 2022-03-13 07:44 心悟&&星际 阅读(788) 评论(0) 推荐(0) 编辑
摘要: Bellman-Ford最短路径算法单源最短路径给定一个图,和一个源顶点src,找到从src到其它所有所有顶点的最短路径,图中可能含有负权值的边。Dijksra的算法是一个贪婪算法,时间复杂度是O(VLogV)(使用最小堆)。但是迪杰斯特拉算法在有负权值边的图中不适用,Bellman-Ford适合这 阅读全文
posted @ 2022-03-13 07:33 心悟&&星际 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 最短路径--迪杰斯特拉(Dijkdtra)算法迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。算法思想每次找到离源点最近的一个顶点,然后以该顶点为中心,然后得到源点到其他顶点 阅读全文
posted @ 2022-03-13 07:29 心悟&&星际 阅读(800) 评论(0) 推荐(0) 编辑
摘要: 最短路径在最短路径问题中,我们给定一个带权重的有向图G=(V,E),和权重函数w,E→R,该权重函数将每条边映射到实数值的权重上。图中一条路径p=(v0,v1…,vk)的权重w(p)是构成该路径的所有边的权重之和。定义从结点u到结点v的最短路径权重δ(u,v)如下δ(u,v)=min(w(p),p是 阅读全文
posted @ 2022-03-13 07:17 心悟&&星际 阅读(460) 评论(0) 推荐(0) 编辑
摘要: 概念树(Tree):如果一个无向连通图中不存在回路,则这种图称为树。n个结点的无向连通图是树,它有几个边吗?生成树 (Spanning Tree):无向连通图G的一个子图如果是一颗包含G的所有顶点的树,则该子图称为G的生成树。生成树是连通图的极小连通子图。这里所谓极小是指:若在树中任意增加一条边,则 阅读全文
posted @ 2022-03-13 07:07 心悟&&星际 阅读(664) 评论(0) 推荐(0) 编辑
摘要: P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G这是一道贪心算法的题目,每次选择两个最小的堆,合并后,继续直到只有一堆为止,可能用multiset进行维护。 #include<bits/stdc++.h> using namespace 阅读全文
posted @ 2022-03-12 19:34 心悟&&星际 阅读(40) 评论(0) 推荐(1) 编辑
摘要: P1886 滑动窗口 /【模板】单调队列 //60分 #include<bits/stdc++.h> using namespace std; vector <int> Maxv,Minv; struct Maxnode { int val; int i; bool operator <(const 阅读全文
posted @ 2022-03-12 08:03 心悟&&星际 阅读(21) 评论(0) 推荐(0) 编辑