随笔分类 -  DP

摘要:Zero Remainder Sum 采用辅助数组 ndp[m+1][m2][k] 来求出每一行中在当前第 i 列,取了 j 个物品,总和模 k 的余数是 t 的最大和是多少。用 dp[n+1][k] 来转移每一行的状态。 # 阅读全文 »
posted @ 2023-04-18 21:12 浅渊 阅读(23) 评论(0) 推荐(0) 编辑
摘要:Timetable 题意: 给出 nm01 串,对于每一行所要花费的代价是行中第一个 1 和最后一个 1 之间的距离加一,现在你有魔法可以去除掉 k1,问去掉不多于 k1 的情况下,你所能获得的最小代价是多少。 思路: 看到有 k 次限 阅读全文 »
posted @ 2023-01-17 23:04 浅渊 阅读(43) 评论(0) 推荐(2) 编辑
摘要:法一: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 阅读全文 »
posted @ 2022-11-23 19:45 浅渊 阅读(37) 评论(0) 推荐(0) 编辑
摘要:逛公园 题目: 策策同学特别喜欢逛公园。公园可以看成一张 N 个点 M 条边构成的有向图,且没有 自环和重边。其中 1 号点是公园的入口,N 号点是公园的出口,每条边有一个非负权值, 代表策策经过这条边所要花的时间。 策策每天都会去逛公园,他总是从 1 号点进去,从 N 号点 阅读全文 »
posted @ 2022-10-15 16:20 浅渊 阅读(15) 评论(0) 推荐(0) 编辑
摘要:胜哥投喂的一道面试题 题意:有一个环形数组a,找出两个不重叠的子串,是的这两个区间内所有的数加起来的和最大。 数据范围: 1n105,|ai|109 思路:看到环形数组而且要选取一段长度为不超过n的区间,所以不 阅读全文 »
posted @ 2022-09-27 00:06 浅渊 阅读(64) 评论(0) 推荐(0) 编辑
摘要:题目链接 思路:因为所有点的权值是互不相同的,并且概率0<px<1,也就是所有的点都会被选到。所以用dp[i][j]来表示节点i权值为j的概率。首先考虑叶子节点,叶子节点都没有子节点所以他们的权值是确定的,dp[i][j]=[i=val];再考虑只有一个子节点的 阅读全文 »
posted @ 2022-09-08 17:52 浅渊 阅读(38) 评论(0) 推荐(0) 编辑
摘要:题目链接 题目大意:投骰子每次会得到一个点数,可以选择是否继续,如果继续的将会得到一个新的点数,如果结束那么当前的点数将是最后的所得到的点数。求所能得到的最大期望值是多少。 思路: 算是一个比较典型的概率dp,考虑是否继续投下去,如果下一次投的点数小于当前的点数,那肯定不会投下去而是选择结束,否 阅读全文 »
posted @ 2022-09-06 10:56 浅渊 阅读(49) 评论(0) 推荐(0) 编辑
摘要:题目链接 题意:将一个序列分成k段,求出这k段中cost(t)=xset(t)last(x)first(x)的大小,也就是求出区间内最后一次出现的数和第一次出现的数之间的差值。 思路: 对于求解这个式子的最小值,考虑用dp来求解,$d 阅读全文 »
posted @ 2022-08-12 21:28 浅渊 阅读(20) 评论(0) 推荐(0) 编辑
摘要:九小时九个人九扇门 可以发现数字根其实就是将每个数位都加起来,然后对9取模,这就是一个数字的数字根。要求的是开启9扇门有多少种方案,可以考虑从xx+ai,也就是第i个人他手表上有的数字ai可以让现在能够开启第x扇门的方案转移到$x + a_i 阅读全文 »
posted @ 2022-07-06 17:56 浅渊 阅读(17) 评论(0) 推荐(0) 编辑
摘要:题目链接 因为找出来的上升子序列是连续的,所以可以考虑用dp[x]=dp[x1]+1来转移状态,同时要时刻更新是从哪一个数开始的 int n; std::cin >> n; std::map<int,int> dp; std::vector<int> a(n); int start 阅读全文 »
posted @ 2022-07-06 16:57 浅渊 阅读(18) 评论(0) 推荐(0) 编辑
摘要:题目链接 算是一个计数类的dp,首先我们先确定状态数有多少个,一个是字符串a现在匹配到了第几位,一个是字符串b现在匹配到了第几位,另一个就是我们现在分成了多少组从字符串a中挑选出一段子串。这三个状态是最直接的状态,还有另一个就是我们是否要选择当前的字符a[i]来进行匹配,这个只有 阅读全文 »
posted @ 2022-05-04 02:09 浅渊 阅读(32) 评论(0) 推荐(0) 编辑
摘要:题目链接 我们要在这个区间中选出任意多个非重叠的区间,使得选出来的区间总长度最长。我们可以从最左端的位置开始枚举,一直枚举到最远的位置,我们用dp[i]来表示从1开始以i结尾的这一段没有重叠区间的最长长度。我们可以发现,只要我们枚举的点是在上一个点的后面,那么前面的最远距离其实是固定的, 阅读全文 »
posted @ 2022-05-04 00:58 浅渊 阅读(50) 评论(0) 推荐(0) 编辑
摘要:题目链接 卡片只有四张,并且我们要知道使用完某张牌之后得到的积分,所以我们要去枚举所有的情况,因为牌的种类数比较少,所以我们可以开四维数组去暴力枚举所有的状态,并且在每一次从前一种状态走到下一个位置的时候,要及时更新,题目要求的是求出最大值这个属性,所以在转移的时候我们只需要去维护最大值这个性质就可 阅读全文 »
posted @ 2022-05-04 00:32 浅渊 阅读(27) 评论(0) 推荐(0) 编辑
摘要:D. Nauuo and Circle 题意: 给定一棵n个节点的树,从1n编号,现在你需要玩弄这棵树。问按照顺时针遍历能获得多少种不同的序列。最后的答案对 思路: 定义son[u]表示u的子节点的个数。先固定1是这个序列中的第一个,因为这是一个环所 阅读全文 »
posted @ 2022-04-16 00:51 浅渊 阅读(22) 评论(0) 推荐(0) 编辑
摘要:医院设置 本题给我们一棵树还有所有点之间的关系,要我们找到医院设在什么位置的时候,在所有节点上的人到医院所有走的距离和最小。要求的是所有点到某一个节点的距离和最小,我们可以想到树的重心。 树的重心的定义是树若以某点为根,使得该树最大子树的结点数最小,那么这个点则为该树的重心,一棵树可能有多个重心。它 阅读全文 »
posted @ 2022-04-15 22:20 浅渊 阅读(180) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示