自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 二分图博弈(tip)

2.若改点在所有最大匹配中均出现过,则所有最大流中源点s到改点均有流量。的路径,那么求最大流的最后一次bfs中(无增广路,必定到不了。1.把这个点及其相邻的边删除,若最大匹配数不变,则改点满足。能到的点都会被标记起来,然后判断即可。到改点的边有流量,且残量网络不存在。相当于在某个最大流方案中,

2024-05-19 20:20:46 418 1

原创 莫队奇偶排序优化

【代码】莫队奇偶排序优化。

2023-05-19 19:17:05 402

原创 异或边的最小生成树

用最高不同位将数字进行分开,之后内部的数字再用同样的方法进行异或连边,比如100和01 10 11 从第3位就不同,那么100就要在1 10 11 中找一个进行异或,1和10 11 在第二位不同,之后 10和11先做,后和1做,最后和100做,复杂度是logn的,每次进行查找还需要30,理论上也是不会炸的。给你1e5个点,每个点有一个权值,两个点之间如果连边,那么边权就是这两个点权异或起来的值,要你求出所有点组成的最小生成树。说实话我真的不可能想的到,哪怕知道了分治的做法,也是花了一段时间去理解的。

2023-05-19 18:59:09 123

原创 图论小tip

假设这两个点为 x, y。且必须经过点 u 到点 v 这条边,那我们就可以把 x 到 y 的最短路分成三段。题意:给定一个无向带权图,你能使一条边的边权权变为 0,求 n 组点对最短路之和最小值。修改的时候直接对其中一段进行操作就行了。(注意无向图要注意修改的先后顺序)

2023-04-24 17:01:49 103

原创 图片旋转笔记

记录一下将图片旋转45度的方法。

2023-03-02 17:25:49 100

原创 SA后缀数组

(求sa的算法有倍增法和DC3,因为后者有码量大、常数大等缺点,这里就只记录倍增算法)我们如果对于每个倍增完的二元组,每个都sort一下,复杂度是O(nlog2)的。那么将基数排序应用到其中去,就可以做到O(nlogn)i

2023-02-25 10:23:18 114

原创 K Tokitsukaze and Synthesis and Traits

我们的目的就是在给定的点中找出原图中构成的边数。通过度数低的点向度数高的点建立有向边。用题目给定的条件构造一张图。可以保证每个点的出边。实用的图论小技巧++

2023-01-19 23:06:16 200

原创 分层图笔记

记录一下我第一次系统性地学习分层图(最短路)这种技巧一般用于有某种限制的最短路中这种限制可以是 高速公路,路上任意时刻满足某种条件(较为简单的)egegeg : lg2939, lg4568, lg5340, lg4822也可以是 横向走纵向走之类的(比较有技巧性的)egegeg : lg3831...

2020-11-27 19:31:49 187

原创 单调队列【笔记】

这里主要写一些我在写单调队列优化DP时的一些心得关于单调队列,有个问题一直困扰了我很久headheadhead 和 tailtailtail 的初始化是(head=1,tail=0head = 1, tail = 0head=1,tail=0)还是(head=1,tail=1head = 1, tail = 1head=1,tail=1)让我们来看看这两种情况无非就是当 tail=1tail = 1tail=1 时,队列里已经有了一个空值而当 tail=0tail = 0tail=0 时队列里什

2020-11-04 07:30:45 116

原创 CF 413 E

线段树好题(get新用法)线段树内维护四个值:每段区间左上到右上,左上到右下,左下到右上,左下到右下的最短路struct node { int dis_1, dis_2, dis_3, dis_4; //dis_1 左上到右上 //dis_2 左上到右下 //dis_3 左下到右上 //dis_4 左下到右下 }tree[N << 2];显而易见的 pushup#include<bits/stdc++.h>using namespace std;type

2020-10-29 09:52:32 129

原创 CF 1435 E

如果 a>b∗ca>b*ca>b∗c 怪物的血就可以无限大,也就是输出−1-1−1反之 a<=b∗ca<=b*ca<=b∗c我们把伤害和回血量抽象一下(伤害为白色,回血为黑色)解释一下:1:最后一次伤害打完不回血最优2:第一次伤害一定大于或等于第一段回血量(不然图就会像下面这样,这样显然去掉第一次更优)(假设黑白交替有xxx段,x=a/b/d+1x=a/b/d +1x=a/b/d+1,想想为什么)我们不难发现黑色段,也就是回血量是一段首项为(x−1)∗b

2020-10-26 10:30:55 175 1

原创 ybt 1488 新的开始

不难看出这是一道最小生成树but,我(蒟蒻)一开始以为是取最小的 v[i]v[i]v[i]然后构建最小生成树这样会有一个问题,建造电网有时候不一定会比建造电站更优so~,我们可以把所有建电站的边连到一个虚点上,这样直接进行最小生成树就不会有问题了#include<bits/stdc++.h>using namespace std;typedef long long ll;const int inf = 1e9 + 7;const int N = 310000;int n,

2020-10-26 08:11:49 331

原创 RMQ (ST表)笔记

#include<bits/stdc++.h>using namespace std;typedef long long ll;const int MAX = 100100;int n, m;int a[MAX], log1[50]; int f[MAX][30];//f[i][j]表示第i个数向后2^j区间内的最大值 inline int read(){ int...

2019-08-05 13:46:51 159

原创 LCA 倍增

预处理出f[i][j] 表示j 点往上走2i 步到达的点。f[0][j]=father[j]f[i][j]=f[i-1][f[i-1][j]]预处理时间复杂度O(n log n)假设我们要求x 和y 的LCA。将x 和y 中深度较大的那个往上跳到和另一个深度相同。再同时向上倍增枚举一个2 的幂的步长2i,若x 往上走2i步与y 往上走2i 步不为同一个点,则将它们同时往上走2i步。...

2019-08-05 12:45:47 126

原创 线段树 笔记

#include<bits/stdc++.h>using namespace std;typedef long long ll;const int MAX = 100010;int n, m;ll a[MAX];ll t[MAX * 100],tag[MAX * 100];inline int read(){ int s = 0, w = 1; char ch ...

2019-08-05 11:08:11 101

原创 靶形数独

一道很典型的搜索题就是有个很神奇的方法可以减少搜索时间// 就是从含有0最少的一行开始搜(膜拜某谷大佬) //其实自己做数独的时候应该也会有小伙伴这么做(方便)上代码#include<bits/stdc++.h>using namespace std;const int MAX=10;struct node{ int x; int cnt;}k[MAX];...

2019-07-19 18:45:36 239 1

原创 1312Mayan游戏

范围很小so~~直接暴搜+模拟上代码#include<bits/stdc++.h>using namespace std;const int MAX=10;int len[MAX];//存高度int n;int a[MAX][MAX];int u[MAX][MAX];int vis[MAX][MAX];int b[MAX][MAX][MAX];struct n...

2019-07-19 13:09:39 151

原创 洛谷 1437 扩散

这道题是一道典型的二分//就是判断有点麻烦——蒟蒻题目说:两个点a、b连通,记作e(a,b),当且仅当a、b的扩散区域有公共部分。连通块的定义是块内的任意两个点u、v都必定存在路径e(u,a0),e(a0,a1),…,e(ak,v)。也就是说一个点扩散到另一个点的 时间 就是他们的横纵坐标差值的和(xi-xj)+ ( yi-yi )如果 时间<mid2 就说明两个块连通(注意mid...

2019-07-17 10:47:36 491 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除