摘要: 题目描述 给定一棵包含N 个节点的完全二叉树,树上每个节点都有一个权值,按从上到下、从左到右的顺序依次是​,如下图所示: 现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。 注:根的深度是 1。 输入格式 第一行包含 阅读全文
posted @ 2024-03-14 22:10 心悟&&星际 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 传送门 题目背景 Hz大大是一种可爱的动物(神)。他很喜欢吐泡泡(更喜欢写作业)。 题目描述 这天,Hz大大心血来潮,吐了n个不同的泡泡玩(保证没有重复的泡泡)。因为他还要写作业,所以他请你帮他把这些泡泡排序成树(左子树<=根<右子树)。输出它的后序遍历。 输入格式 共2行。 第一行,1个整数n。( 阅读全文
posted @ 2024-02-20 09:44 心悟&&星际 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 下面通过几个例子,对递归与循环进行比较。 递归1 #include<iostream> using namespace std; void dfs(int n) { if (n==0) return; cout<<n<<” “; dfs(n-1); } int main() { dfs(10000) 阅读全文
posted @ 2024-02-20 08:44 心悟&&星际 阅读(28) 评论(0) 推荐(0) 编辑
摘要: U41492 树上数颜色 题目描述 给一棵根为1的树,每次询问子树颜色种类数 输入格式 第一行一个整数n,表示树的结点数 接下来n-1行,每行一条边 接下来一行n个数,表示每个结点的颜色c[i] 接下来一个数m,表示询问数 接下来m行表示询问的子树 输出格式 对于每个询问,输出该子树颜色数 输入输出 阅读全文
posted @ 2024-02-19 17:30 心悟&&星际 阅读(61) 评论(0) 推荐(0) 编辑
摘要: 题目描述 前传:详见洛谷 P2525 Uim 成功地按照顺序将礼物送到了 N 个妹子的手里并维持她们的和谐。 现在 Uim 现在想知道,他最终选择的顺序是所有给 N 个妹子送礼顺序中,字典序第几小的。送礼顺序可以看作1,2,⋯,N 的一个排列。 输入格式 第一行一个整数N,表示有 N 个数。 第二行 阅读全文
posted @ 2024-02-19 16:33 心悟&&星际 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 四种类型的第k小数 1、静态整体Kth 很简单...sort一遍就好了。 时间复杂度O(nlogn) 空间复杂度O(n) 2、动态整体Kth 2.1离散化后开一棵权值线段树,每个位置的值表示这个位置对应的那个数(离散化后的)有多少个,向上维护和; 查询时先查询左子树和sum,比较k和sum的大小:若 阅读全文
posted @ 2023-04-14 10:17 心悟&&星际 阅读(61) 评论(0) 推荐(0) 编辑
摘要: 4.1for语句 例4.1对于给定的任意正整数n,输出1~n的平方数。 #include<iostream> using namespace std; int main() { int i,n; cin>>n; for (i=1;i<=n;i++) cout<<i*i<<" "; return 0; 阅读全文
posted @ 2022-12-11 22:44 心悟&&星际 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 3.1if语句和关系表达式 例3.1快递业务 #include<iostream> #include<iomanip> #include<cmath> using namespace std; int main() { int a,b,n; long long s; cin>>a>>b>>c; s= 阅读全文
posted @ 2022-12-11 22:38 心悟&&星际 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 2.1变量和变量的类型 例2.1将整数65存储到计算机内存,并且输出 #include<iostream> using namespace std; int main() { int a; a=65; cout<<a<<endl; return 0; } 2.1.1变量与变量类型概念 内存:计算机存 阅读全文
posted @ 2022-12-11 22:19 心悟&&星际 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 1.1程序设计概念例1.1打开记事本编写一个程序,让计算机告诉大家我爱编程,即"I love programming"。 #include<iostream> using namespace std; int main() { cout<<"I love programming"<<endl; re 阅读全文
posted @ 2022-12-11 21:23 心悟&&星际 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 操作 1 :把某个节点 x 的点权增加 a 。操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。操作 3 :询问某个节点 x 到根的路径中所有点的点权和。 //点修改+树修改,(点->根)链查询 #include<bits/stdc++.h> #define ll long long 阅读全文
posted @ 2022-11-22 09:57 心悟&&星际 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 对权值作为维护对象而开的线段树,即每个点存的是区间内对应数字的某种值(出现的次数)。 权值线段树用于维护一个数在一个序列中出现的次数 比如数值1,1,2,2,2,3,4,5,6,7,8 初始每个节点为0 插入1 插入2 插入3 插入4 插入5 插入6 插入7 插入8 模板普通平衡树p3369题目描述 阅读全文
posted @ 2022-11-22 09:44 心悟&&星际 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 简单来说就是,你要用到一个点才开那个点,不用的点不开,可以大幅节省空间。这样空间复杂度可以大致降到O(nlogn)。是不是很棒。接下来是实现:一开始,你只有一个根节点。通过update函数往树里面插点,开两个数组记录每个节点的左右儿子编号。递归进入左右儿子,如果要用新点,就开新点。上代码(以区间和为 阅读全文
posted @ 2022-11-22 09:26 心悟&&星际 阅读(60) 评论(0) 推荐(0) 编辑
摘要: tarjan算法求LCA //tarjan算法 #include<bits/stdc++.h> using namespace std; const int maxn=5e5+10; vector<int> tre[maxn]; struct node{ int to; int id; }; vec 阅读全文
posted @ 2022-11-08 19:22 心悟&&星际 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 重链剖分 #include<bits/stdc++.h> using namespace std; const int maxn=3e4+10; struct node{ int to; int nxt; }E[maxn<<1]; int n,h[maxn],etot,tot,top[maxn],s 阅读全文
posted @ 2022-11-07 21:32 心悟&&星际 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 题目描述异或是一种神奇的运算,大部分人把它总结成不进位加法.在生活中…xor运算也很常见。比如,对于一个问题的回答,是为1,否为0.那么:(A是否是男生 )xor( B是否是男生)=A和B是否能够成为情侣好了,现在我们来制造和处理一些复杂的情况。比如我们将给出一颗树,它很高兴自己有N个结点。树的每条 阅读全文
posted @ 2022-11-07 19:43 心悟&&星际 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 问题描述 给定一棵有n个点的树(点的编号为1~n),根为1,点有点权,设点i的初始值为0,给出q个操作,每个操作给出两个点和一个值,u,v,t,表示将u到v的路径上的所有点加t,输出所有操作后每个点的点权,。 输入格式 第一行输入两个整数n,q表示树的点的数目与操作次数 下面n-1行,每行两个整数x 阅读全文
posted @ 2022-11-07 19:24 心悟&&星际 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 问题描述有一棵n个点的树,每个点i有点树v[i],q个询问求点u到点v最简路径上所有点权之和输入格式第一行n,q表示有n个点,q个询问第二行n个整数表示每个点的权下面n-1每行三个整数x,y,z描述边的信息及边长 下面q行每行两个整数u,v表示询问的两个点路径长度 输出q行,每行为u到v最简路径长度 阅读全文
posted @ 2022-11-07 18:49 心悟&&星际 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 问题描述有一棵n个点的树,每个点i有点树v[i],q个询问求点u到点v最简路径上所有点权之和输入格式第一行n,q表示有n个点,q个询问 第二行n个整数表示每个点的权 下面n-1每行两个整数x,y描述边的信息下面q行每行两个整数u,v表示询问的两个点 输出q行,每行为u到v最简路径上的点权和样例in5 阅读全文
posted @ 2022-11-07 12:09 心悟&&星际 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 简介二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree),亦称二叉搜索树。二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:1.若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值;2.若右子树不空,则右子树上所有结点的值均大于或等于它的 阅读全文
posted @ 2022-11-06 22:29 心悟&&星际 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 树链剖分前置知识:dfs序,splay树的区间操作1.重链剖分2.长链剖分3.实链剖分 阅读全文
posted @ 2022-11-06 21:56 心悟&&星际 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 二叉搜索树(BST树)前置知识,二叉树,排序主要运算1.插入2.删除3.元素的排名4.排名为k的元素5.元素x的前驱6.元素x的后继平衡二叉搜索树1.avl树2.treap树3.splay树4.红黑树5.替罪羊树C++中的红黑树1.set2.map 阅读全文
posted @ 2022-11-06 21:53 心悟&&星际 阅读(25) 评论(0) 推荐(0) 编辑
摘要: dfs序前置知识:线段树,树状数组,LCA,树的存储,树的基础问题类型1.点修改,子树查询2.子树修改,点查询3.子树修改,子树查询4.链修改,点查询5.点修改,链查询6.链修改,子树查询7.子树修改,链查询(1-3)易,(4-5)中,(6-7)难 阅读全文
posted @ 2022-11-06 21:44 心悟&&星际 阅读(26) 评论(0) 推荐(0) 编辑
摘要: P3369 【模板】普通平衡树 方法一: //avl数组版 #include<bits/stdc++.h> using namespace std; const int maxn=100010; struct avlnode{ int val; int size; int cnt; int heig 阅读全文
posted @ 2022-04-10 21:29 心悟&&星际 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 定义:因子和函数σ定义为整数n的所有正因子之和,记为σ(n)。下面是1~12的σ(n) n 1 2 3 4 5 6 7 8 9 10 11 12 σ(n) 1 3 4 7 6 12 8 15 13 18 12 28 定理:设正整数n有素因子分解,那么 阅读全文
posted @ 2022-04-08 09:54 心悟&&星际 阅读(272) 评论(0) 推荐(0) 编辑
摘要: P1177 【模板】快速排序 //动态开点线段树,指针版 #include<bits/stdc++.h> using namespace std; const int maxn=100010; typedef struct node{ int cnt; node* ls; node* rs; }no 阅读全文
posted @ 2022-04-08 08:42 心悟&&星际 阅读(44) 评论(0) 推荐(0) 编辑
摘要: P3919 【模板】可持久化线段树 1(可持久化数组) #include<cstdio> #include<cstring> #include<iostream> #define R register int using namespace std; const int N=1000009,M=50 阅读全文
posted @ 2022-04-07 10:09 心悟&&星际 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。有时候有些属性是有优先级顺序的,先按低优先级排序,再按高优先级排序。最后的次序就是高优先级高的在前,高优先级相同的低优先级高的在前。 算法描述 1.取得数组中的最大数,并取得位数; 2.arr为原始数组,从最低位开 阅读全文
posted @ 2022-04-02 21:54 心悟&&星际 阅读(92) 评论(0) 推荐(0) 编辑
摘要: P3391 【模板】文艺平衡树 //非旋转treap #include<bits/stdc++.h> using namespace std; const int N=10e5+5; int ch[N][2],tag[N],val[N],siz[N],key[N]; int tn,root,n,m; 阅读全文
posted @ 2022-03-29 18:36 心悟&&星际 阅读(15) 评论(0) 推荐(0) 编辑
摘要: P3369 【模板】普通平衡树 //AVL树题解 #include<bits/stdc++.h> using namespace std; typedef struct AVLTreeNode{ int key;//键值 int height;//树的高度 int size;//树的大小 int c 阅读全文
posted @ 2022-03-27 22:15 心悟&&星际 阅读(39) 评论(1) 推荐(0) 编辑
摘要: P6136 【模板】普通平衡树(数据加强版) //非旋转的Treap树 #include<bits/stdc++.h> using namespace std; const int INF=0x7fffffff; struct Node *nil; // 自定义的空指针,防止翻车(RE) struc 阅读全文
posted @ 2022-03-27 18:18 心悟&&星际 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 核心操作:分裂与合并1.分裂(split)有两种:按权值分裂与按位置(排名)分裂如果按权值分裂(split):那么分出来两棵树的第一棵树上的每个数的大小都小于(或者小于等于,视具体情况)x。如果按位置分裂(split):那么分出来两棵树的第一棵树上恰好有x个结点。 //按权值分裂 inline vo 阅读全文
posted @ 2022-03-25 11:00 心悟&&星际 阅读(21) 评论(0) 推荐(0) 编辑
摘要: P5020 [NOIP2018 提高组] 货币系统 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int MAXAI=25005; const int MAXN=105; int f 阅读全文
posted @ 2022-03-24 09:27 心悟&&星际 阅读(24) 评论(0) 推荐(0) 编辑
摘要: p1616 疯狂的采药 #include<iostream> #include<vector> using namespace std; const int Maxn=10000001; int a[Maxn],b[Maxn],dp[Maxn]; int main() { // freopen("p 阅读全文
posted @ 2022-03-24 09:24 心悟&&星际 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 完全背包 此类背包问题中,我们的每种物品有无限多个,可重复选取。 类似于01背包,我们依旧需要考虑前i-1件物品的影响。 此时我们依旧可以设得二维状态 f[i][v]代表用i件物品填充为体积为v的背包得到的最大价值 依旧很容易写出状态转移方程 f[i][v]=max(f[i−1][v],f[i−1] 阅读全文
posted @ 2022-03-24 09:21 心悟&&星际 阅读(34) 评论(0) 推荐(0) 编辑
摘要: P1177 【模板】快速排序 #include<bits/stdc++.h> using namespace std; typedef struct AVLTreeNode{ int key; int height; AVLTreeNode* left; AVLTreeNode* right; AV 阅读全文
posted @ 2022-03-22 20:25 心悟&&星际 阅读(19) 评论(0) 推荐(0) 编辑
摘要: P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G #include<bits/stdc++.h> using namespace std; typedef struct AVLTreeNode{ int key; int height; 阅读全文
posted @ 2022-03-22 20:21 心悟&&星际 阅读(33) 评论(0) 推荐(0) 编辑
摘要: P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G这是一道贪心算法的题目,用BST维护有序性,每次取最小值,并删除,取两次合并为新的一堆,进行n-1次,这样就合并为一堆了统计过程每一次的大小。指针版 #include<bits/stdc++ 阅读全文
posted @ 2022-03-21 20:05 心悟&&星际 阅读(62) 评论(0) 推荐(0) 编辑
摘要: P1926 小书童——刷题大军 #include<iostream> #include<algorithm> using namespace std; int dp[200]; int a[20],b[20],c[20]; int n,m,k,r; int main() { cin>>n>>m>>k 阅读全文
posted @ 2022-03-21 08:25 心悟&&星际 阅读(33) 评论(0) 推荐(0) 编辑
摘要: P2639 [USACO09OCT]Bessie's Weight Problem G #include<iostream> using namespace std; long long dp[45001]; int s[501]; int main() { int N,H; cin>>H>>N; 阅读全文
posted @ 2022-03-21 08:24 心悟&&星际 阅读(18) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示