摘要:题目 https://codeforces.com/problemset/problem/1878/E 题意 输入一个正整数 ,代表 组测试用例,对于每个测试用例: 第一行,输入一个整数 \(n(1 \leq 2 \times 10^5)
阅读全文
摘要:前言 反悔贪心是贪心算法的一种改进或扩展策略。贪心算法是指仅考虑每步最优,从而达到全局最优。在传统贪心算法的基础上,反悔贪心允许算法在一定条件下进行回溯或调整。简言之就是采取骑驴找马的策略,在别无选择的情况下,先选择当前最优解,当有更好的选择的时候,将之前最糟糕的选择替换为新的选择。 题目 http
阅读全文
摘要:前言 Floyd 算法(弗洛伊德算法)是解决图论中全源最短路径问题的一种经典算法。全源最短路径问题是指对于给定的一个带权有向图(也可以是无向图,将无向图看作双向有向图即可),求出每一对顶点之间的最短路径长度。Floyd 算法是动态规划思想的一个典型应用,动态规划的过程是引入一个中转节点来松弛路径。
阅读全文
摘要:题目 https://atcoder.jp/contests/abc379/tasks/abc379_f 题意 第一行输入两个正整数 ; 第二行输入长度为
阅读全文
摘要:题目 https://codeforces.com/problemset/problem/1789/C 题意 第一行输入一个正整数 ,代表 组测试用例。 对于每组测试用例:第一行输入两个正整数 \(n, m(1 \leq n, m \le
阅读全文
摘要:题目 https://codeforces.com/problemset/problem/2044/H 题意 第一行,输入一个正整数 ,代表总共 组测试用例。对于每组测试用例:第一行输入两个正整数 \(n, q(1 \leq n \leq
阅读全文
摘要:题目 前置题目:https://leetcode.cn/problems/number-of-good-pairs/description/ 当前题目:https://leetcode.cn/problems/count-special-subsequences/description/ 题解 将
阅读全文
摘要:题目 https://leetcode.cn/problems/count-number-of-ways-to-place-houses/ 题解 由于道路两边的房子彼此互不影响,因此满足相互独立的条件,故而两侧的方案的乘积就是最后的答案。 因为两侧空地的数量都是 ,因此只要算出其中一侧的方
阅读全文
摘要:前言 对于一个在定义域上极值点的函数,可以求取该函数在定义域上的极值和最值。对于一个凸函数,其极值点对应的函数值就是极小值;对于一个凹函数,其极值点对应的函数就是极大值。且函数若在定义域内有且仅有一个极值点,那么极值点也是最值点。函数的最值,要么出现在极值点,要么出现在定义域上的端点。 对于三分法,
阅读全文
摘要:题目 https://leetcode.cn/problems/maximum-employees-to-be-invited-to-a-meeting/description/ 题解 从 向 连边,会形成一张 个点 条边的有向图,
阅读全文
摘要:题解 内向基环树的一个基本特征就是总共有 个节点和 条边,且每个节点的出度至多为 ,因此本题符合内向基环树的特征。 先使用拓扑排序,标记全部的简单环外的节点,剩余的节点就必定是环上的节点。 参考代码 class Solution { public: int long
阅读全文
摘要:前言 基环树,又名环套树,是具有 个节点和 条边的图,比树多出现一个环。基环树也根据边的有向和无向分为了有向基环树和无向基环树。有向基环树又可以分为内向基环树和外向基环树。对于有向基环树,若基环树的每个节点的出度均为 ,则称为内向基环树;若基环树的每个节点的入度均为
阅读全文
摘要:前言 Z 函数的定义 对于一个字符串 ,定义 Z 函数 为以 为起始位置的后缀与整个字符串 的最长公共前缀的长度。 Z 函数的应用 字符串匹配问题 题目 https://codeforces.com/problemset/problem/20
阅读全文
摘要:题意 第一行输入一个正整数 ,表示共有 组测试用例。对于每一组测试用例: 第一行输入三个正整数 ,且保证 之
阅读全文
摘要:前言 双堆懒删除 当需要维护若干元素中的最大值(或最小值)时,可以用一个堆维护,但是堆只擅长处理堆顶元素,对堆中任意元素的处理就束手无策了。此时,可以引入另外一个堆,我们定义原来的堆为保存堆 ,新的堆为懒删除堆 。那么当需要从保存堆中删除任意一个元素时,可以先将元素放入懒删除
阅读全文
摘要:题目 https://loj.ac/p/6282 题解 数据范围 ,因此进行分块最多分 块。且数据是随机生成的,因此插入数据后,每个块的长度期望值为 \(\frac{318+(318 + 100000/318)}
阅读全文
摘要:题目 https://codeforces.com/problemset/problem/2026/D 题意 第一行输入一个正整数 ,第二行输入 个整数 \(a_1, a_2, ..., a_i, ..., a_n(-10 \leq a_i
阅读全文
摘要:前言 对一个 int 类型的非负整数进行开方下取整,最多只会开方四次大小就不会再发生变化。一个大于 的正整数开方下取整最后的结果比如是 ,而 开方的结果仍然会是 ; 开方的结果仍是 。 验证int类型整数最多可以开方的次数的demo #
阅读全文
摘要:题目 https://loj.ac/p/6280 题解 将 个元素的数组 按块长 进行分块处理。为每个块设置两个懒添加标记 ,分别代表这个区间每个元素共同添加的数值大小,区间和(不包括懒添加的值)。 对于区间加操作
阅读全文
摘要:前言 异或运算:是一种在二进制数系统中使用的逻辑运算。它的基本规则是对两个二进制位进行比较,如果这两个位不同,则结果为 ;如果相同,则结果为 。 异或运算的规则 XOR = XOR = XOR \
阅读全文