自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分块算法入门

对于区间信息的整理,我们往往会用**树状数组**或者**线段树**,但在维护一些较为复杂的信息时,例如不满足区间可加、可减时就显得非常的吃力,代码实现起来也不那么简单、直观。分块算法的基本思想是,通过适当的划分,预处理一些信息保存下来,用空间换取时间,从而达到时空平衡。分块的思想是把数据分成若干块,为了时间复杂度的均摊,块的大小通常设置为 `sqrt(n) `,以块为单位维护区间的值。...

2022-08-15 21:31:19 679 1

原创 带权并查集 & 种类并查集

带权并查集就是在维护集合关系的树中添加边权的并查集,这样做可以维护更多的信息。在对并查集进行路径压缩和合并操作时,这些权值具有一定属性,即可将他们与父节点的关系,变化为与所在树的根结点关系。 也就是说,权值代表着**当前节点与父节点的某种关系(即使路径压缩了也是这样)**,通过两者关系,一般的并查集,维护的是具有连通性、传递性的关系,例如**亲戚的亲戚是亲戚**。但是,有时候,我们要维护另一种关系:**敌人的敌人是朋友**。种类并查集就是为了解决这个问题而也可以将同一棵树下两个节点的关系表示出来。

2022-08-10 01:29:20 1582

原创 POJ - 1182 食物链(种类并查集)

动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述:第一种说法是"1 X Y",表示X和Y是同类。第二种说法是"2 X Y",表示X吃Y。此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。1) 当前的话与前面的某些真

2022-07-26 11:08:40 214

原创 POJ 1703 Find them, Catch them

种类并查集比较典型的题目。

2022-07-25 21:18:41 160

原创 P1111 修复公路

简单并查集

2022-07-25 10:35:05 220

原创 P1551 亲戚

并查集模板题目

2022-07-25 09:59:17 79

原创 P3367 【模板】并查集

并查集基础模板

2022-07-25 09:53:17 83

原创 Codeforces Round #805 (Div. 3)题解报告

Codeforces Round #805 (Div. 3)A. Round Down the PriceB. Polycarp Writes a String from MemoryC. Train and QueriesD. Not a Cheap StringE. Split Into Two SetsF. Equate MultisetsG1. Passable Paths (easy version)G2. Passable Paths (hard version)

2022-07-11 23:15:53 405

原创 01背包详解

01背包文章目录01背包1.1 问题引入1.2 基本思路1.3 优化空间复杂度1.4 初始化的细节问题1.5 小结【说明】本文主要参考来源为崔添翼大佬著名的《背包九讲》,大佬讲的非常透彻,而我所作的工作就是将这篇讲义入门化、详细化,你也可以理解为《背包九讲》的笔记版本。你也可以直接浏览大佬的文章:https://github.com/tianyicui/pack。1.1 问题引入​有N件物品和一个容量为V的背包。放入第 i 件物品耗费的费用是 Ci,得到的价值是 Wi。求解将哪些物品装入背包可使价

2022-03-04 00:11:36 7380

原创 P3985 不开心的金明

P3985 不开心的金明题目描述金明今天很不开心,家里购置的二手房就要领钥匙了,房里并没有一间他自己专用的很宽敞的房间。更让他不高兴的是,妈妈昨天对他说:“你需要购买哪些物品,怎么布置,你说了不算(有很大的限制),而且不超过W元钱。”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的W元。于是,他把每件物品规定了一个重要度整数pi表示。他还从因特网上查到了每件物品的价格vi(都是整数元)。妈妈看到购物单后进行了审查,要求购物单上所有的物品价格的极差(最贵的减去最便宜的)不超过3(

2022-03-02 13:57:19 265

原创 二分、三分入门

二分、三分入门二分、三分入门小故事1. 二分法简介1.1 时间复杂度1.2 工作原理1.3 空间复杂度1.3.1 递归版本1.3.2 非递归版本1.3.3 STL 的二分查找2. 常见题型2.1 二分查找2.2 二分查找2.2.1 [NOIP2015 提高组] 跳石头3. 三分简介小故事一天DOGGOD_Q到图书馆借了 N 本书,出图书馆的时候,警报响了,于是保安把DOGGOD_Q拦下,要检查一下哪本书没有登记出借。DOGGOD_Q正准备把

2022-01-15 02:23:37 658

原创 Dijkstra算法详解

Dijkstra算法详解文章目录Dijkstra算法详解问题引入Dijkstra算法介绍Dijkstra算法实现的过程举个例子问题引入P4779 单源最短路径给定一个 n个点,m条有向边的带非负权图,请你计算从 s 出发,到每个点的距离。数据保证你能从 s 出发到任意点。这基本上是单源最短路径的基本问题Dijkstra算法介绍Dijkstra 算法基于贪心思想,它只适用于所有边的长度都是非负数的图。当边长z都是非负数时,全局最小值不可能再被其他节点更新,故在第1步中选出的节点 x必然满足:

2021-11-03 11:01:01 653

原创 网络流 最大流 最小割 费用流

【腾讯文档】网络流初步网络流初步文章目录网络流初步一、网络流简介1. 网络2. 流3. 再次理解网络流二、常见题型(三种)三、相关问题对应算法介绍1.最大流(1) FF算法 - Ford-Fulkerson算法(2)EK算法 - Edmonds-Karp增广路算法(3)Dinic算法(4)ISAP算法总结2.最小割最大流最小割定理割(CUT)3.费用流问题:一、网络流简介网络流是算法竞赛中的一个重要的模型,它有两个部分:网络和流。图片来源1. 网络网络就是一张有向图 G = (V,E)。

2021-08-20 11:43:33 1779 2

原创 模板:KMP

#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>char list1[1000001],list2[10001];int next[10001];int n, m, num;void Get_next(){ int i = 1,j = 0; next[0] = -1; while(i < m) {

2021-06-20 00:00:29 109

原创 模板:线段树 & 线段树区间赋值

基础线段树 & 线段树区间赋值struct SegmentTree{ // 线段树的结构体 int l, r; int dat, lazy;}t[maxn*4 + 2];void Build(int p,int l,int r){ t[p].l = l, t[p].r = r; if (l == r) { t[p].dat = a[l]; return; } int mid = (l + r) >> 1; Build(lson, l, mid); // p*2 Bui

2021-06-19 23:21:36 780

原创 模板:树状数组(单点修改&区间查询 || 单点查询&区间)

树状数组(单点修改&区间查询 || 单点查询&区间)#include<bits/stdc++.h>using namespade;int tr[99999];inline int lowbit(int x){ return x&-x;}void add(int x, int k){// 单点修改:O(log n) add(i, k) for(;x<=n;x+=lowbit(x)) tr[x] += k;}int ask

2021-06-19 23:14:13 90

原创 模板:并查集(路径压缩)

并查集(路径压缩)#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<cstdlib>#include<string>#include<algorithm>#define error -1#define ok 1using namespace std;typedef long long ll;const

2021-06-19 23:09:36 147

原创 树状数组(BIT)带模板比赛可直接使用(区间修改&单点查询)

树状数组(BIT)带模板比赛可直接使用文章目录树状数组(BIT)带模板比赛可直接使用引入问题前置知识 - lowbit()运算相关信息全称起源与介绍作用基本概念树状数组的思想与实现思想总结两个操作add(i,k)ask(i)例题引入问题给出一个长度为n的数组,完成以下两种操作将第i个数加上k输出区间[x,y]内的区间和朴素算法O(n^2)单点修改:O(n)区间查询:O(n)引入树状数组O(nlog 2 n)单点修改:O(log2 n)区间查询:O(log 2 n)前置知识

2021-06-14 21:01:58 324

原创 线段树(懒标记)

线段树基本信息全称线段树(Segment Tree)起源与介绍线段树是一种二叉树,可视为树状数组的变种,最早出现在2001年,由程式竞赛选手发明。作用线段树可以在O(log n) 的时间复杂度内实现单点修改、区间修改、区间查询(区间求和,求区间最大值,求区间最小值)等操作。基本概念线段树是一种基于分治思想的二叉树,用于在区间上进行信息的统计。与按照二进制进行区间划分的树状数组相比,线段树是一种更加通用的结构;线段树的每一个节点都代表一个区间线段树具有的唯一根节点,代表的区间是整个统计

2021-05-22 22:03:53 2867 2

原创 棋盘覆盖问题

棋盘覆盖问题文章目录棋盘覆盖问题棋盘覆盖问题在物理世界的应用问题描述如何证明该问题有解算法实现算法分析棋盘覆盖问题在物理世界的应用房间铺瓷砖,要绕开某处(前提是他不把瓷砖切了);并行激光手术;你们想想吧,有想法私信一下我。问题描述在一个2^k × 2^k 个方格组成的棋盘中,若有一个方格与其他方格不同,则称该方格为一特殊方格,且称该棋盘为一个特殊棋盘.显然特殊方格在棋盘上出现的位置有4^k 种情形.因而对任何 k≥ 0,有 4^k 种不同的特殊棋盘.下图中的特殊棋盘是当k=3时16个特殊

2020-12-16 23:54:59 645

空空如也

空空如也

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

TA关注的人

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