02 2024 档案
摘要:1.闭合不规则的图形面积(简单) 使用bfs算法遍历外围端点并标记,最后找没被标记的个数即是面积。 点击查看代码 #include<bits/stdc++.h> using namespace std; struct site { int x,y; }s,now,det; queue<site>q;
阅读全文
摘要:1.树状数组 一般为求区间的和并统计某个特定值的数量,同时可以进行快速的在线更新。不算特别重要,简略带过。 看例题 点击查看代码 #include<bits/stdc++.h> using namespace std; const int N=300000; int n,c[N],s[N]; str
阅读全文
摘要:线段树算是树状数组的进阶版了,树状数组能做的,线段树也肯定能做,它做不了的,线段树也能做。 但确实线段树的代码量也很让人挠头,基本原理不再解释。 先看一下基础的模板吧 单点修改和区间查询 点击查看代码 #include<bits/stdc++.h> using namespace std; cons
阅读全文
摘要:树状数组基础模板 树状数组,顾名思义就是用树的结构来存储数据,树状数组支持的操作有区间修改和区间查询(单点也是可以),具体原理不再解释。 一维树状数组模板 点击查看代码 const int N=; int c[N];//树状数组 int n; int a[N];//存储数组 int lowbit(i
阅读全文
摘要:先看一下模板 点击查看代码 //f[i][j]表示从i到j区间的值 for(int len=2;len<=n;len++)//len表示区间长度 { for(int i=1;i+len-1<=n;i++)//关系一般为2<=i<=k<j<=n { int j=i+len-1;//j的求值,开始点+区
阅读全文
摘要:坐标DP相较来说会比较简单。 直接上例题 1.坐标遍历问题 传纸条 点击查看代码 #include<bits/stdc++.h> using namespace std; const int N=120; int m,n; int g[N][N],f[N][N][N]; int ans; int m
阅读全文
摘要:这篇主要涉及线性DP。 先介绍模型,求最长上升子序列。 点击查看代码 #include <bits/stdc++.h> using namespace std; const int N=1020; int n; int f[N],ans,a[N]; int pre[N],te; void outpu
阅读全文
摘要:下面介绍一下背包DP主要题型 基础模型(没什么好说的,上模板) 1.01背包 最主要的模板,应用很多,很重要!!! 倒着遍历容积,不会受后选小的f[i][j]影响,已经选过的物品不会再选一遍。 点击查看代码 #include <bits/stdc++.h> using namespace std;
阅读全文
摘要:说一下近日所学的主要两种题型,一个是分叉情况问题,一种是树上背包问题。 分叉情况问题 具体的题可以参考小胖守皇宫和三色二叉树。 点击查看代码 小胖守皇宫 #include<bits/stdc++.h> using namespace std; const int N=2000; vector<int
阅读全文