随笔分类 - ACM / 数据结构
摘要:并查集 并查集,就是看谁和谁是一伙的,加入到同一棵树中。 代码要点: //找到一个结点根结点的函数 int fin(int x) { if(rt[x]==x)return x; return rt[x]=fin(rt[x]);//快速查找 } //把每一个序号的父结点改为自身 for(int i =
阅读全文
摘要:前缀和&二维前缀和 1. 前缀和 先写了一道前缀和的题目,以前的我这能骗人,其实不太沾边,所以先放一个模板代码在这。 前缀和的原理就是,a[i]的意义是从1~i的数的总和是多少,如果我想 #include<bits/stdc++.h> using namespace std; const int N
阅读全文
摘要:(Day7)算法复健运动for蓝桥杯-二分 二分比较简单,这里主要摘一些常用的写法: 1.找到目标数 int l,r,mid; while(l<=r) { if(a[mid]==x)return mid; else if(a[mid]<x)l=mid+1; else r=mid-1; } 2.找范围
阅读全文
摘要:(Day9)算法复健运动for蓝桥杯-双指针 先粘一个博客:素材来源https://www.cnblogs.com/luoyj/p/12408871.html 尺取法(又称为:双指针、two pointers)是算法竞赛中一个常用的优化技巧,用来解决序列的区间问题,操作简单、容易编程。 如果区间是单
阅读全文
摘要:(Day10)算法复健运动for蓝桥杯-差分&二维差分 差分简介 差分是前缀和的逆运算 b[i]=x[i]-x[i-1]; (差分的前缀和等于原序列) 可以用来更新区间 如果要l 到 r都加z 可以使用一个差分数组 a[l]+=z a[r+1]-=z 一维差分模板题: https://www.luo
阅读全文
摘要:(Day8)算法复健运动for蓝桥杯-最小生成树 一提到生成树就是经典prim和kruskal,一个从一个点开始,一个把边排序 虽然不用反复造轮子,但是还是需要从算法思想直接写出来,不能老背板子 练手的模板题: https://www.luogu.com.cn/problem/P3366 krusk
阅读全文
摘要:(Day12)算法复健运动for蓝桥杯-单调队列 模板题:https://www.luogu.com.cn/problem/P1886 这个不是严格的生成真正的滑动窗口,而是满足找最大值和最小值。 详见注释: #include<bits/stdc++.h> using namespace std;
阅读全文
摘要:(Day14) 算法复健运动for蓝桥杯-分治&归并排序 分而治之,个人理解就是类似递归,就是把大问题转化为子问题,然后一步步解决的 例子: 归并排序讲解: https://www.cnblogs.com/chengxiao/p/6194356.html 就是先用递归把数字分开,然后再按照顺序把两头
阅读全文