![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
Harlow.
这个作者很懒,什么都没留下…
展开
-
背包问题 -- 断档背包
01背包的原型,不过每次询问都有一段区间不能选取Input第一行包括三个整数n, m, V其中m表示询问次数接下来n行包含两个整数w[i]、v[i],表示每个物品的价值和体积接下来m行包含两个整数l,r,表示第l个物品到第r个物品这次不能选乍一看这道题摸不着头脑,但是!它每次不能选取的物品都是一段区间,而我们01背包的处理本身就是从1到n的答案由此可得=>可以正序\倒叙分别...原创 2019-10-26 15:31:20 · 232 阅读 · 0 评论 -
悬线法--解决图内最大矩形类问题
有这样一类题,让你在一个区域范围内找到最大矩形(面积/边长)eg. 棋盘制作 巨大的牛棚 玉蟾宫这类问题都是在一个有限制条件的区域内取矩形通用“悬线法” 解决悬线法顾名思义,假设图中有一条平行于y轴的线,线上的某一段点能左右移动的范围+这段线的长度=一个矩阵的面积因此我们可以预处理出每个点左右移动的范围,最后合并范围相同的点寻找答案其中限制条件在每次状态转移是加上玉蟾宫代...原创 2019-10-26 08:05:22 · 283 阅读 · 0 评论 -
The Luckiest number -- 数论题
Description题意:给你一个数L,让你求出最小的一个数能被L整除,这个数满足每一位都是8。input811160outputCase 1: 1Case 2: 2Case 3: 0所用数论知识:欧拉同余定理欧拉函数质数筛法第一步列式 :(10 ^ x - 1) / 9是x个连续的8的表达代码如下#include <algorithm>#i...原创 2019-10-23 17:18:22 · 152 阅读 · 0 评论 -
线段树 & 树状数组
最基础的区间修改 & 查询#include <bits/stdc++.h>#define il inline#define re registerusing namespace std;typedef long long ll;const ll maxn = 100010;struct node { ll all;//区间求和 ll tag_ad...原创 2019-10-16 21:34:04 · 125 阅读 · 0 评论 -
并查集专题
普通并查集il void init() { for(re ll i = 1; i <= n; ++i) fa[i] = i;}il ll find(ll x) { return fa[x] == x?x : fa[x] = find(fa[x]);}il void merge(ll x, ll y) { ll fx = find(x), fy = find(y); i...原创 2019-10-16 17:22:59 · 73 阅读 · 0 评论 -
最小生成树
求最小生成树一般有 Prim 算法与 Kruskal 算法,其中,Prim 算法时间复杂度为 O(n*n),与图中边数无关,适合稠密图;Kruskal 算法时间复杂度 为O(ElogE),需要对图的边进行访问,适合稀疏图详细理解 => Click herePrim(加点法)#include <bits/stdc++.h>#define il inline #define...原创 2019-10-16 10:52:58 · 102 阅读 · 0 评论 -
Dijistra+优先队列优化
Dijistra普通板子是直接遍历与一个点相连的所有边,找到最小边权所在的边,再去更新利用优先队列的优化可以减少枚举的复杂度,每次直接取队首最小即可(注意要重定义优先顺序)不能处理带负边权的图 => 需用Spfa解决#include <bits/stdc++.h>#define il inline#define re registerusing namespace s...原创 2019-10-16 09:18:13 · 219 阅读 · 0 评论 -
快速幂 & 快速乘
两种算法通常搭配使用快速幂当指数为奇数时答案先乘上底数,指数再减一(化幂为乘)快速乘基本思想和快速幂相同,细节稍作修改(化乘为加)ll Mul(ll x, ll a) { ll res = 0;//由于是加法累计答案,初始化为0 while(a) { if(a & 1) res = (res + x) % mod; x = (x + x) % mod; a...原创 2019-10-16 08:46:03 · 153 阅读 · 0 评论 -
逆元的求法
线性预处理逆元用于组合数取模#include <bits/stdc++.h>using namespace std;const int maxn = 1010;const int inf = 0x3f3f3f3f;int n, m, p;int fac[maxn], inv[maxn];void init() { fac[0] = 1, inv[1] = inv[...原创 2019-10-15 21:46:05 · 123 阅读 · 0 评论 -
Floyd & Spfa
Floyd 适用于多源多点最短路时间复杂为 (n^3) … 慎用!!!k 层的循环写在外面#include <bits/stdc++.h>using namespace std;const int maxn = 1000;//会超1s最多跑1e8的数据const int inf = 0x3f3f3f3f;int n, m;int mp[maxn][maxn];vo...原创 2019-10-15 21:11:46 · 103 阅读 · 0 评论 -
模板代码归类
数论求gcd&exgcd click here欧拉函数逆元(线性预处理 & 是否是质数*2)快速幂&快速乘菲波那切数列 & 杨辉三角图论Floyd & SpfaDijistra+优先队列优化连通块 & 并查集Tarjan缩点最小生成树数据结构线段树 & 树状数组队列 & 栈差分数组离...原创 2019-10-15 20:39:20 · 142 阅读 · 0 评论 -
GCD & exGCD
int gcd(int a, int b) { return b == 0? a : gcd(b, a%b);}int exgcd(int a, int b, int x, int y) {//a*x + b*y = gcd(a, b) if(b == 0) { x = 1; y = 0; return a; } int r = gcd(b, a%b, x, y); in...原创 2019-10-15 20:37:29 · 97 阅读 · 0 评论