随笔分类 - 算法合集
本人学算法的过程
发表于 2024-11-15 09:34阅读:3评论:0推荐:0
摘要:问题描述 给 个区间, 你可以任意选择给出区间的一部分, 换句话说, 你可以任意选择一个给出区间的所有子集(包括空集), 然后你要进行以下的操作 : 对于选择的区间, 我们要进行整体加操作, 即如果你选择了 , 那么对于所有的 \(a_j, j∈[l_i, r
阅读全文 »
发表于 2024-11-04 18:54阅读:8评论:0推荐:0
摘要:这里提供一个不用拓扑排序并且容易理解的贪心做法 常年没用过拓扑排序的蒟蒻实在是没想到用拓扑排序,其实如果不使用拓扑排序的话,这个题完全可以是绿的思维难度,首先观察样例,发现对于第一个给出的快照,除了作者之外的所有人的顺序就是定了的,也就是需要作者插入一个地方即可,那么我们可以顺着这个思路来做,对于第
阅读全文 »
发表于 2024-10-09 20:42阅读:11评论:0推荐:0
摘要:C C 观察题意, 模拟样例, 首先 不能动, 因为相邻的 会改变, 然后 也是如此, 所以我们固定了 和 , 设两个指针 和 表示固定的位置, 那么此时在他们两个中间的数可以随便移动, 假设有 个空位
阅读全文 »
发表于 2024-10-06 12:09阅读:8评论:0推荐:0
摘要:问题引出: 给出 个点的树,求出分别以不同的 为根时,所有结点深度的和,根节点的深度为 。 首先我们有个自然的暴力思路, 也就是以每个节点为根节点做一遍 这样的复杂度是 级别的, 所以要进行优化 看下图: 我们首先假设每个节点具
阅读全文 »
发表于 2024-08-06 20:27阅读:60评论:0推荐:0
发表于 2024-07-30 03:04阅读:16评论:0推荐:0
摘要:定义 线性基用于解决类似于: "给定 个数, 取任意个数, 使得异或值最大"此类问题 本质上还是求出多个数最大和最小的异或和,由于给出的数目较大, 如果直接一一比较的话时间复杂度较大,可以通过线性基优化, 假如有 个, 其中最大的数二进制位数为 位, 那么线性基可
阅读全文 »
发表于 2024-07-25 23:11阅读:91评论:0推荐:0
摘要:定义 高斯消元方法 摘自here 给定 元一次方程组 \[\begin{cases} a_{1,1}x_1+a_{1,2}x_2+\cdots+a_{1,n}x_n=b_1\ a_{2,1}x_1+a_{2,2}x_2+\cdots+a_{2,n}x_n=b_2\ \cdots\
阅读全文 »
发表于 2024-07-20 13:31阅读:12评论:0推荐:0
摘要:数位 大多使用高位计算的时候使用低位计算后的结果,从而做到优化效率 [ZJOI2010] 数字计数 题目描述 给定两个正整数 和 ,求在 中的所有整数中,每个数码各出现了多少次。 保证 。 求
阅读全文 »
发表于 2024-07-18 23:06阅读:17评论:0推荐:0
摘要:A - 地毯 标准的二维差分前缀和,定义 为当前格子的权值,然后根据题目模拟题意进行差分求和即可 #include <bits/stdc++.h> #define int long long using namespace std; const int N = 1e3 + 1
阅读全文 »
发表于 2024-07-14 19:47阅读:27评论:0推荐:0
摘要:引言 第一次接触树链/重链剖分的时候还是学习 , 没系统性的看过剖分, 今天刚重新学习了一下, 还是比较神奇的, 没想到一个树形结构能有这么多种神奇的操作, 总的来说, 树链剖分还是比较重要的一个策略 正文 定义 先给出图示 首先我们给出以下几个定义: 重儿子, 对于一个非叶子节点,
阅读全文 »
发表于 2024-07-14 02:50阅读:83评论:0推荐:0
摘要:来补题了, 晚上有事没打比赛(还好没打不然掉大分 A Buy a Pen 按照题目给的意思模拟即可, 一共有三种情况: #include <bits/stdc++.h> #define int long long using namespace std; const int N = 1e6 + 10
阅读全文 »
发表于 2024-07-12 03:17阅读:59评论:0推荐:0
摘要:介绍 点分治, 作为一种统计带权树简单路径长度的暴力分治算法, 其分治方法非常的巧妙, 可以将暴力的 优化到 先看问题: 在一个带权树上, 统计两个点的简单路径长度不超过 的路径个数 这就是 模板题1 POJ1741 首先还是考虑如何使用暴
阅读全文 »
发表于 2024-06-13 17:50阅读:39评论:0推荐:0
摘要:本章对标:D - Three Days Ago 问题非常简单,也就是求出所有连续区间且这个区间内的数字都出现了偶数次的总合法区间数 那么很明显有中 的算法,但复杂度不够,那么枚举区间不行,从别的方面入手,考虑到每个字符只能是数字,那么我们此时可以将其转化为一个二进制串,表示的含
阅读全文 »
发表于 2024-06-11 12:56阅读:16评论:0推荐:0
摘要:基环树简单介绍 目录#1.0 啥是基环树?#1.1 无向图上的基环树#1.2 有向图上的基环树#1.2.1 内向树#1.2.2 外向树#2.0 基环树的一般处理思路#2.1 大体方法#2.2 找到环#2.2.1 思路#2.2.2 代码实现#2.3 剩下的操作#3.0 例题#3.1 [IOI2008]
阅读全文 »
发表于 2024-06-09 22:04阅读:178评论:0推荐:0
摘要:Problem J. Breakfast 直接根据题意模拟即可: #include <bits/stdc++.h> #define int long long using namespace std; const int N=1e6+10,mod=1e9+7; signed main() { std
阅读全文 »
发表于 2024-06-07 17:31阅读:26评论:0推荐:0
摘要:对于树上的两点之间的简单路径,求经过边权值的最大异或和 首先考虑一个点到根节点所经过路径的异或和,可以深搜求出 考虑两点简单路径的异或和,其值一定是两个点分别到根节点的异或和的异或,那么此时我们已知一个点,如果求出另一个点使得两点之间的异或和最大呢? 考虑字典树存取,深搜完之后,将每个点到根节点的异
阅读全文 »
发表于 2024-05-27 23:58阅读:22评论:0推荐:0
摘要:重构一下线段树的博客,关于线段树的相关定义以及证明过段时间再补 首先是一个简单线段树,这里叫做伪线段树,其实本质就是一个二叉树,仅能支持单点操作: 单点修改 + 区间查询 // 单点修改查询 // http://ybt.ssoier.cn:8088/problem_show.php?pid=1549
阅读全文 »
发表于 2024-05-27 21:15阅读:29评论:0推荐:0
摘要:这是我做 AtCoder 的时候发现的一个问题,有感而发: 首先,对于任何一个数,我们都能给它做质因数分解,也就是把他们分成一个个质因数的平方乘 现在考虑一个非完全平方数,就假如它分解质因数之后的形式为: 25∗34∗57 那么我们把他的平方数进行模 操作之后就变成了: 21∗30∗52
阅读全文 »
发表于 2024-05-26 12:05阅读:13评论:0推荐:0
摘要: 想必大家都不陌生,这里先贴个模板hh 从0开始: for (int i = 1, j = 0; i < s2.length(); i++) { while (j && s2[i] != s2[j]) j = ne[j - 1]; if (s2[i] == s2[j]) j++; ne
阅读全文 »
发表于 2024-05-26 11:32阅读:13评论:0推荐:0
摘要:见题:E - Digit Sum Divisible (atcoder.jp) P4127 [AHOI2009] 同类分布 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 考虑数位动规,设方程 为状态: :搜到了第 位(倒着枚举,也就是
阅读全文 »