文章分类 - Algorithm
Learning in algorithm
线段树复习
摘要:线段树复习 线段树是基于分治思想的二叉树,用来维护区间信息(区间和,区间最值,区间$gcd$等),可以在$nlogn$的时间内执行区间修改和区间查询 。 线段树的叶子节点存储元素本身,非叶子节点存储区间内的元素统计值。 建树 关于线段树为什么开$4 \times N$大小: 单点修改 $O(
阅读全文
树状数组学习
摘要:树状数组 | 算法 | 单点修改 | 求前缀和 | | | | | | 前缀和 | $O(1)$ | $O(n)$ | | 树状数组 | $O(logn)$ | $O(logn)$ | 我们将区间拆分成$[r - lowbit(r) + 1, r]$, 如上图所示,我们用右端点$r$来表示一个区
阅读全文
加分二叉树 区间dp
摘要:加分二叉树 区间dp 题目 加分二叉树 思路 由于根节点可以任选, 所以我们可以令$f[l][r]$ 表示考虑区间$[l, r]$合并的最优加分二叉树, 那么我们可以从根遍历,则问题转化为区间dp问题 $$ f[l][r] = max(f[l][k - 1] \times f[k + 1][r] +
阅读全文
作物杂交 SPFA -- dp
摘要:作物杂交 SPFA -- dp 题目 作物杂交 思路 首先回想一下bellman-ford算法通过$n - 1$次枚举,每次枚举所有的边进行松弛,算法的复杂度为$O(n \times m)$, 我们使用队列进行优化,即每次可能松弛其他点的边一定是上一次被松弛的点, 所以我们可以用一个队列来维护当
阅读全文
The Great Julya Calendar 记忆化搜索-数位dp
摘要:The Great Julya Calendar 记忆化搜索-数位dp 题目 C1. The Great Julya Calendar time limit per test 2 seconds memory limit per test 256 megabytes input standard i
阅读全文
2022蓝桥杯题解
摘要:2022蓝桥杯题解 九进制转十进制 $$ (2022)9 = (2 \times 9^0 + 2 \times 9^1 + 2 \times 9^3){10} $$ #include <iostream> using i64 = long long; int main() { int n, ans
阅读全文
哈希表学习
摘要:哈希表学习 存储结构 模拟散列表 开放寻址法 #include <iostream> #include <cstring> using i64 = long long; const int N = 2000003, null = 0x3f3f3f3f; int h[N]; int find(int
阅读全文
NOIP-2003 传染病控制 暴力-深搜
摘要:题目 P1041 [NOIP2003 提高组] 传染病控制 思路 一开始想到的是计算每个节点的儿子数量,然后贪心一边, 但是这样是错误的,下面给出例子证明贪心法是错误的。 自顶向下错误证明: 自底向上错误证明: 说明:由于贪心策略,我们把儿子多的节点先给挂了, 导致我们最后的节点数为
阅读全文
砖块,费解的开关 (递推)
摘要:题目1 砖块 思路 (递推) 我们可以通过题目条件,找出来本题的一些性质 每两个相邻砖块至多操作一次 通过这个性质,我们可以递推的求每个砖块是否被操作,假设砖块变成白色,如果操作第$i$个和第$i + 1$砖块后,不能使第$i$个砖块变为W, 则不进行该操作,因为后续操作无法使该砖块变为W。
阅读全文
蒙德里安的梦想
摘要:蒙德里安的梦想 蒙德里安的梦想 思路 状态压缩DP 状态表示: 设$f[i][j]$表示**前$i-1$列已经摆放整齐, 第$i$列的状态为$j$**时的方案数,$j$用十进制来表示二进制数,当$j$的第$k$位为$0$时,表示该列没有方块覆盖,即可以理解为该列没有被$i - 1$列的$1 \t
阅读全文
P5440 【XR-2】奇迹 思维+筛法
摘要:P5440 【XR-2】奇迹 题目 P5440 【XR-2】奇迹 思路 思维+筛法 第一次做的时候思路是暴力搜索,但是这样在代码上和时间复杂度上都是比较高的,后来看题解才知道可以先打表,虽然打表的题做的很多,但是做这道题还是没有想到,可能在思考上太少了。 我们可以枚举把满足条件的数存储到数组
阅读全文
邮票 Stamps
摘要:邮票 Stamps P2725 [USACO3.1]邮票 Stamps 思路 设$f[i][j]$为考虑前$i$个数,当面值为$j$时的最小邮票数,则状态转移式如下(完全背包计数): $f[i][j] = min(f[i - 1][j], f[i][j - coins[i]] + 1)$, 初始
阅读全文
货币系统-计数类背包问题
摘要:货币系统-计数类背包问题 问题 532. 货币系统 - AcWing题库 思路 题意: 对于给定长度为$n$的序列$a$, 对于序列$a$种任意数的线性组合有 $s = k_1a_1 + k_2a_2 + ..., \space k_i \in Z^+$ 求另一个序列满足$a$中能用线性
阅读全文
二维费用背包问题
摘要:二维费用背包问题 给定$n$个物品,对于每个物品有容量$v_i$, 负收益$w_i$,给定负收益阈值$k$, 最大容量$m$, 求保证负收益最低的情况 下最多能装多少物品。 该问题对于集合划分同样可以划分成装与不装两个集合,与01背包相同, 我们需要考虑两个状态量, 负收益和容量,对于保证负
阅读全文
多重背包复习
摘要:多重背包问题 有 $N$种物品和一个容量是 $V$的背包。 第 $i$种物品最多有 $s_i$ 件,每件体积是 $v_i$,价值是 $w_i$。 求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。 输出最大价值。 滑动窗口优化 $O(n \times v)$ $f[i][j]
阅读全文
单调栈与单调队列复习
摘要:单调栈与单调队列复习 单调队列 解决问题 对于给定序列$a$, 求固定长度区间$k$, 关系运算最大或最小的问题. 最朴素的做法是$O(nk)$, 利用单调队列可以将复杂度降为$O(n)$. 思路 以求区间最大为例: 假设存在一个长度为$k$的队列,从$1 \to n$枚举,若$a_i \ge
阅读全文
1027. 方格取数 - 线性dp
摘要:题目 1027. 方格取数 - AcWing题库 思路 一开始dp了两次,错误,然后又尝试第一次dp后在进行回溯,把第一次最优路径中的点更改为$0$, 然后第二次dp,在把两次和相加,这样是错的。 这两个子最优结构并不同属一个最优结构,这两个子最优结构只能保证单次最优,然后再单次最优的情况下
阅读全文
#edu142-D.Fixed Prefix Permutations Trie树
摘要:题目 D.Fixed Prefix Permutations 思路 Trie数,顺便处理以下映射数组 Code #include <bits/stdc++.h> using i64 = long long; const int N = 5e5 + 10; int nex[N][15], cnt;
阅读全文
edu#142 - Min Max Sort 思维+二分
摘要:题目 Min Max Sort 思路 1. 若序列合法 2. 那么最后一次操作一定用到最大值和最小值 去掉最大值和最小值, 继续操作1 每次都保证一定会用到该值,所以保证解是正确的, 当时做的时候一直想不开,看了大佬的题解幡然醒悟。 现在问题转化为如何更快的检查序列是否合法?显然暴力的话$O
阅读全文
CF#846 D-Bit Guessing Game 位运算
摘要:链接🔗 Bit Guessing Game 思路🤔🎈 对$(11000)_2$ 我们求最低位的$1$, 可以经过以下步骤 $(11000)_2 - 1 = (10111)_2$ $count_1(11000_2) - count_1(10111) + 1$得到最低位的1的位数, 其中$coun
阅读全文
浙公网安备 33010602011771号