随笔分类 - DP
摘要:Zero Remainder Sum 采用辅助数组 $ ndp[m + 1][\frac{m}{2}][k] $ 来求出每一行中在当前第 $ i $ 列,取了 $ j $ 个物品,总和模 $ k $ 的余数是 $ t $ 的最大和是多少。用 $ dp[n + 1][k] $ 来转移每一行的状态。 #
阅读全文
摘要:Timetable 题意: 给出 $n$ 行 $m$ 列 $01$ 串,对于每一行所要花费的代价是行中第一个 $1$ 和最后一个 $1$ 之间的距离加一,现在你有魔法可以去除掉 $k$ 个 $1$,问去掉不多于 $k$ 个 $1$ 的情况下,你所能获得的最小代价是多少。 思路: 看到有 $k$ 次限
阅读全文
摘要:法一:dsu #include <bits/stdc++.h> using ll = long long; using namespace std; const int N = 100010; struct node { int v, nxt; }e[N * 2]; int h[N], idx; i
阅读全文
摘要:逛公园 题目: 策策同学特别喜欢逛公园。公园可以看成一张 $N$ 个点 $M$ 条边构成的有向图,且没有 自环和重边。其中 $1$ 号点是公园的入口,$N$ 号点是公园的出口,每条边有一个非负权值, 代表策策经过这条边所要花的时间。 策策每天都会去逛公园,他总是从 $1$ 号点进去,从 $N$ 号点
阅读全文
摘要:胜哥投喂的一道面试题 题意:有一个环形数组$a$,找出两个不重叠的子串,是的这两个区间内所有的数加起来的和最大。 数据范围: $1 \leq n \leq 10 ^ 5, \left| a_i \right| \leq 10 ^ 9$ 思路:看到环形数组而且要选取一段长度为不超过$n$的区间,所以不
阅读全文
摘要:题目链接 思路:因为所有点的权值是互不相同的,并且概率$0 < p_x < 1$,也就是所有的点都会被选到。所以用$dp[i][j]$来表示节点$i$权值为$j$的概率。首先考虑叶子节点,叶子节点都没有子节点所以他们的权值是确定的,$dp[i][j] = [i = val]$;再考虑只有一个子节点的
阅读全文
摘要:题目链接 题目大意:投骰子每次会得到一个点数,可以选择是否继续,如果继续的将会得到一个新的点数,如果结束那么当前的点数将是最后的所得到的点数。求所能得到的最大期望值是多少。 思路: 算是一个比较典型的概率$dp$,考虑是否继续投下去,如果下一次投的点数小于当前的点数,那肯定不会投下去而是选择结束,否
阅读全文
摘要:题目链接 题意:将一个序列分成$k$段,求出这$k$段中$cost(t) = \sum\limits_{x \in set(t)} last(x) - first(x)$的大小,也就是求出区间内最后一次出现的数和第一次出现的数之间的差值。 思路: 对于求解这个式子的最小值,考虑用$dp$来求解,$d
阅读全文
摘要:九小时九个人九扇门 可以发现数字根其实就是将每个数位都加起来,然后对$9$取模,这就是一个数字的数字根。要求的是开启$9$扇门有多少种方案,可以考虑从$x \rightarrow x + a_i$,也就是第$i$个人他手表上有的数字$a_i$可以让现在能够开启第$x$扇门的方案转移到$x + a_i
阅读全文
摘要:题目链接 因为找出来的上升子序列是连续的,所以可以考虑用$dp[x] = dp[x - 1] + 1$来转移状态,同时要时刻更新是从哪一个数开始的 int n; std::cin >> n; std::map<int,int> dp; std::vector<int> a(n); int start
阅读全文
摘要:题目链接 算是一个计数类的$dp$,首先我们先确定状态数有多少个,一个是字符串$a$现在匹配到了第几位,一个是字符串$b$现在匹配到了第几位,另一个就是我们现在分成了多少组从字符串$a$中挑选出一段子串。这三个状态是最直接的状态,还有另一个就是我们是否要选择当前的字符$a[i]$来进行匹配,这个只有
阅读全文
摘要:题目链接 我们要在这个区间中选出任意多个非重叠的区间,使得选出来的区间总长度最长。我们可以从最左端的位置开始枚举,一直枚举到最远的位置,我们用$dp[i]$来表示从$1$开始以$i$结尾的这一段没有重叠区间的最长长度。我们可以发现,只要我们枚举的点是在上一个点的后面,那么前面的最远距离其实是固定的,
阅读全文
摘要:题目链接 卡片只有四张,并且我们要知道使用完某张牌之后得到的积分,所以我们要去枚举所有的情况,因为牌的种类数比较少,所以我们可以开四维数组去暴力枚举所有的状态,并且在每一次从前一种状态走到下一个位置的时候,要及时更新,题目要求的是求出最大值这个属性,所以在转移的时候我们只需要去维护最大值这个性质就可
阅读全文
摘要:D. Nauuo and Circle 题意: 给定一棵$n$个节点的树,从$1$到$n$编号,现在你需要玩弄这棵树。问按照顺时针遍历能获得多少种不同的序列。最后的答案对$%998244353$ 思路: 定义$son[u]$表示$u$的子节点的个数。先固定$1$是这个序列中的第一个,因为这是一个环所
阅读全文
摘要:医院设置 本题给我们一棵树还有所有点之间的关系,要我们找到医院设在什么位置的时候,在所有节点上的人到医院所有走的距离和最小。要求的是所有点到某一个节点的距离和最小,我们可以想到树的重心。 树的重心的定义是树若以某点为根,使得该树最大子树的结点数最小,那么这个点则为该树的重心,一棵树可能有多个重心。它
阅读全文

浙公网安备 33010602011771号