08 2024 档案
摘要:题面: 指令 M : 合并两个集合 指令 C : 查询两个点之间的布置了多少战舰 算法1 (带权并查集) 0.为何使用带权并查集? 维护边权,这里指的边权时该点到根节点之间一共有多少个节点 1.带权并查集:维护点到跟的距离 2.需要开两个数组存放该点到跟节点的距离,以及该集合的大小(集合中存放的元素
阅读全文
摘要:算法1 (离散化+并查集) 没想到的点: 由于数据范围很大1e9,因此需要采用离散化,从而降低时间复杂度 主要思想 1.约束条件有相等/不相等,不难发现,相等的约束条件是属于一个集合的 -- 因此需要用到并查集思想 我们按照e的大小进行排序,从而完成先处理 e = 1 的所有情况 3.并查集: 初始
阅读全文
摘要:集合 题目描述 Caima 给你了所有 $[a,b]$ 范围内的整数。一开始每个整数都属于各自的集合。每次你需要选择两个属于不同集合的整数,如果这两个整数拥有大于等于 $p$ 的公共质因数,那么把它们所在的集合合并。 重复如上操作,直到没有可以合并的集合为止。 现在 Caima 想知道,最后有多少个
阅读全文
摘要:【深基17.例5】木材仓库 题目描述 博艾市有一个木材仓库,里面可以存储各种长度的木材,但是保证没有两个木材的长度是相同的。作为仓库负责人,你有时候会进货,有时候会出货,因此需要维护这个库存。有不超过 100000 条的操作: 进货,格式1 Length:在仓库中放入一根长度为 Length(不超过
阅读全文
摘要:家谱 题目背景 现代的人对于本家族血统越来越感兴趣。 题目描述 给出充足的父子关系,请你编写程序找到某个人的最早的祖先。 输入格式 输入由多行组成,首先是一系列有关父子关系的描述,其中每一组父子关系中父亲只有一行,儿子可能有若干行,用 #name 的形式描写一组父子关系中的父亲的名字,用 +name
阅读全文
摘要:[USACO16DEC] Cities and States S 题目描述 Farmer John 有若干头奶牛。为了训练奶牛们的智力,Farmer John 在谷仓的墙上放了一张美国地图。地图上表明了每个城市及其所在州的代码(前两位大写字母)。 由于奶牛在谷仓里花了很多时间看这张地图,他们开始注意
阅读全文
摘要:上链接 [CEOI2017] Sure Bet 题目描述 现在有 $n$ 个A类灯泡和 $n$ 个B类灯泡,每个灯泡都有各自的权值。 我们将这些灯泡分为 $n$ 组,每组包含一个来自A类的灯泡和一个来自B类的灯泡。 你可以从中选取任意个灯泡,每选取一个灯泡需要花费 $1$ 的代价。 在你选取完之后,
阅读全文
摘要:题面链接 最大子子矩形问题 首先一些概念 1.有效子矩阵: 内部不包含任何障碍点,且边界与坐标轴平行的子矩阵 2.极大子矩阵:一个有效子矩阵,如果不包含它,且比它大的有效子矩阵,则为极大有效子矩阵 3.最大有效子矩阵:所有有效矩阵中最大面积的子矩阵 极大化思想 定理1. 有一个障碍点的矩形中的最大子
阅读全文
摘要:DP 1.状态定义: f[i][j]: 以(i,j)为右下角,可构造的最大正方形的边长 2.状态计算 想一想以(i,j)为右下角的正方形,有哪一个状态转移过来 对于已经确定的点:f[i][j] = x 表示包含(i,j),向上连续x个节点,向左连续x个节点 对于待确定的点:f[i][j] = x,需
阅读全文
摘要:思路 1.枚举所有可能的说谎人数 2.当 a[i] 大于说谎人数,说明第i个人说谎,cnt++; 3.当 cnt == a[i], 如果说谎人数恰好等于当前发言者所说的骗子数,则说明找到正解了 C++ 代码 #include <bits/stdc++.h> using namespace std;
阅读全文