数据结构
文章平均质量分 73
基础数据结构的学习
jigsaw_zyx
人生总是来来往往,可凭心而行,可随心而动,千万别等来日方长
展开
-
楼兰图腾(树状数组)
树状数组t[N]存数出现的次数#include<bits/stdc++.h>using namespace std;const int N=200020;int n;//把a[i]的数值化为叶节点,t[i]统计存的是数字个数 int a[N],t[N];int gre[N],low[N]; void add(int x,int c){ for(int i=x;i<=n;i+=i&(-i)) t[i]+=c;}int sum(int x){ int原创 2022-04-30 15:51:34 · 329 阅读 · 0 评论 -
数据结构——树状数组
文章目录树状数组 :前置知识基本原理addask应用区间修改,单点查询区间修改,区间查询扩展应用树状数组 :1.快速求前缀和2.修改一个数前置知识lowbit()运算:非负整数n在二进制表示下最低位1及其后面的0构成的数值eg:lowbit(44)=lowbit((101100)_2)=(100)_2 =4原码:101100反码:010100两码位于->000100即lowbit(n)=n&(~n+1)=n&(-n) (~表示取反)基本原理树的深度:log(原创 2022-04-29 09:47:12 · 865 阅读 · 1 评论 -
线段树模板(不会有人还不会吧?比如我)
文章目录基础学习题目大意分析线段树的基本思想**建树****查询区间和****修改一个数**ACC代码应用基础学习首先,讲得非常好的UP猪(链接点着里~)题目大意要求查找一个区间内的和,和修改一个数分析如果是用遍历或者前缀和的思想,无论如何总有一个操作是O(n)的时间复杂度,这时候就需要我们寻找另外的办法降低复杂度遍历:前缀和:线段树:线段树的基本思想建树由于这里存树是用完全二叉树存树,在理想情况下,N个叶节点的满二叉树有N+N/2+N/4+N/8…+2+1=2N+1个节点原创 2022-03-06 17:18:24 · 1506 阅读 · 5 评论 -
L2-013 红色警报 (25 分)(图的连通性:DFS或者利用并查集连通性)
L2-013 红色警报 (25 分)战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。输入格式:输入在第一行给出两个整数N(0 < N ≤ 500)和M(≤ 5000),分别为城市个数(于是默认城市从0到N-1编号)和连接两城市的通路条数。随后M行,每行给出一条通路所连接的两个城市的编号,其间以1个空格分隔原创 2022-03-04 21:57:46 · 181 阅读 · 0 评论 -
并查集基础以及拓展应用(理解记忆了还怕并查集?)
最近老是做到并查集的题,趁着机会总结一下用法,今后遇到新题型继续补充博客,不得不说最近一天不敲代码手痒得慌啊!可是自己太菜了根本记不到!可恶!记忆记忆!文章目录基础并查集初始化查找合并边带权并查集例题:查找合并AC代码练习题扩展域并查集例题分析AC代码练习题基础并查集初始化 for(int i=0;i<=n;i++) f[i]=i;查找int get(int x){ if(x==f[x]) rturn x; return f[x]=find(f[x]);//路径压缩 }原创 2022-03-04 21:30:05 · 358 阅读 · 0 评论 -
L2-012 关于堆的判断 (25 分)
写在前面的废话今天把追了两个星期的小说看完了…感觉很是感慨啊,在这里纪念一下:我欲乘风向北行,雪落轩辕大如席。我欲借船向东游,绰约仙子迎风立。我欲踏云千万里,庙堂龙吟奈我何?昆仑之巅沐日光,沧海绝境见青山。长风万里燕归来,不见天涯人不回!记得,我们都是少年。输时不悲,赢时不谦。手中握剑,心中有义。见海辽远,就心生豪迈。见花盛开,不掩心中喜悦。前路有险,却不知所畏。有友在旁,就想醉酒高歌。想笑了就大声笑,想骂了就破口骂,人间道理万卷书,只求随心随行!…没有小说看的今夜开始有些无聊了啊原创 2022-03-03 23:43:21 · 186 阅读 · 0 评论 -
L2-007 家庭房产 (25 分)(带边权并查集的应用)
题目描述给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。输入格式:输入第一行给出一个正整数N(≤1000),随后N行,每行按下列格式给出一个人的房产:编号 父 母 k 孩子1 … 孩子k 房产套数 总面积其中编号是每个人独有的一个4位数的编号;父和母分别是该编号对应的这个人的父母的编号(如果已经过世,则显示-1);k(0≤k≤5)是该人的子女的个数;孩子i是其子女的编号。输出格式:首先在第一行输出家庭个数(所有有亲属关系的人都属于同一个家庭)。随后按原创 2022-03-01 23:41:56 · 311 阅读 · 0 评论 -
STL用法总结
文章目录#include< vector >基本操作应用#include< queue >循环队列queue优先队列priority_queue#include< deque >基本操作#include< set >有序集合set有序多重集合multiset#include< vector >基本操作#include<bits/stdc++.h>using namespace std;//初始化 vector<int原创 2022-02-27 21:52:59 · 464 阅读 · 2 评论 -
最小生成树
文章目录朴素版prim算法题目描述代码朴素版prim算法关键词:稠密图,时间复杂度O(n^2)每次选择不在连通块的最小距离的点,然后更新数据题目描述给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数。求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。给定一张边带权的无向图G=(V, E),其中V表示图中点的集合,E表示图中边的集合,n=|V|,m=|E|。由V中的全部n个顶点和E中n-1条边构成的无向连通子图被称为G的一棵生成树,其中边的权值之和原创 2022-02-15 23:08:04 · 262 阅读 · 1 评论 -
《算法竞赛进阶指南》之栈篇(包含min函数的栈+编辑器+火车进栈+直方图中最大的矩形)
《算法竞赛进阶指南》续篇~文章目录包含min函数的栈解题思路AC代码编辑器解题思路AC代码火车进栈题目大意解题思路AC代码直方图中最大的矩形解题思路AC代码包含min函数的栈原题链接:https://www.acwing.com/problem/content/90/题目描述设计一个支持push,pop,top等操作并且可以在O(1)时间内检索出最小元素的堆栈。push(x)–将元素x插入栈中pop()–移除栈顶元素top()–得到栈顶元素getMin()–得到栈中最小元素样例Min原创 2021-11-12 21:59:02 · 348 阅读 · 0 评论 -
数据结构基础(三)
文章目录哈希表拉链法:模拟散列表(数组+单链表)开放寻址法哈希表哈希表可以干什么?也就是将很大范围的数映射到范围较小的数,方便查找哈希表的优点是什么?避免了查找的时候范围过大导致的时间复杂度过高的情况其实,哈希表就是把一段范围大的数离散化拉链法:图解:方法:将范围大数映射到小数上,为了避免相同映射的“冲突”,我们利用在小数数组上加上单链表的办法来避免“冲突”;注意:寻找N的时候必须保证N是质数,可以通过数学方法推导验证,当N为质数的时候求得的小数范围查找最精确快速。原创 2021-09-29 18:24:33 · 670 阅读 · 0 评论 -
数据结构超级基础学习(二)
数据结构第二部分学习ing学习前的一点点记录:今日有许些感叹,虽然总会有低谷的时候,但一定要坚信你的信仰,即使在黑暗,也要相信未来你会遇到你想要的,你期待的,以及你期望的人是存在的,也总有人过着你期望的生活。为了自己的信仰,加油学习吧!文章目录trie字典树题目trie字典树trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节原创 2021-08-23 17:41:47 · 504 阅读 · 0 评论 -
数据结构超级基础学习(一)
今天开始学习数据结构的链表了!加油!单链表的操作://单链表#include <bits/stdc++.h>using namespace std;const int N=100086;//e[i]表示节点i的值//ne[i]表示节点i的next指针是多少//head存储头节点的下标//idx存储当前已经用到了哪个点int e[N],ne[N],idx,head;//初始化void init(){ head=-1; idx=0;}//将x插到表头vo原创 2021-08-20 15:49:04 · 442 阅读 · 0 评论