随笔分类 - dp
摘要:嘟嘟嘟 先考虑这两点: 1.如果我们有结束时间相同的课程,且达到的能力相同,那么我们一定选择开始时间最晚的。 2.如果有能力值相同的滑雪坡,我们一定选择时间最短的。 因此先预处理两个数组。cla[i][j]代表在 i 时刻结束,能力值达到 j 的课程中开始的最晚时间,ski[i]代表需要能力值至少为
阅读全文
摘要:嘟嘟嘟 这很显然是一道dp题。 令dp[i][j]表示第 i 分钟末,疲劳度为 j 是的最大跑步距离,则 dp[i][0] = max(dp[i - 1][0], max(dp[i - j][j])) dp[i][j] = max(dp[i - 1][j - 1] + a[i]) 因为题中说即使疲劳
阅读全文
摘要:嘟嘟嘟 我先瞅了一眼数据范围,l <= 10, T <= 15,然后凭着我不灵光的数学10! * 15 = 54432000 ≈ 5e7,于是我们就水一发全排列,然后就卡过去了…… 1 #include<cstdio> 2 #include<iostream> 3 #include<algorith
阅读全文
摘要:嘟嘟嘟 区间dp。 令dp[i][j]表示从[i, j]的最少染色方案数。 很明显,当 i == j 时,dp[i][j] = 1;否则,如果s[i] == s[j],即两个端点颜色相同,那么端点处的颜色只用染一次,也就是说可以从 i 这头染,也可以从 j 这头染,则dp[i][j] = min(d
阅读全文
摘要:嘟嘟嘟 此题一看就是一个dp题。 首先我们设dp[i][j]表示前 i 个人中有 j 个男生(这和dp[i][j]表示 i 个男生 j 个女生等价),然而当我们转移到dp[i + 1][j + 1]或dp[i + 1][j]时,限制条件没有用上。所以要再加两维dp[i][j][x][y]表示前 i
阅读全文
摘要:嘟嘟嘟 一看n那么小,那一定是状压dp了(表示从没写过,慌)。 首先dp[i][j](i 是一个二进制数,第x位为1代表选了第x头牛),表示 i 这个状态最后一头牛是第 j 头牛时的方案数。 然后当 j 被选上时,即 if(i & (1 << (j - 1)))时,我们在枚举倒数第二头牛p,也是当他
阅读全文
摘要:嘟嘟嘟 dp。 刚开始我想的是dp[i][j]表示在第 i 棵树上,高度为h能吃到的最多的果子,如此能得到转移方程: dp[i][j] = max(dp[i][j + 1], dp[k][j + derta]) (k = 1~n && k != i)。但因为这样写会导致dp[k][j + derta
阅读全文
摘要:嘟嘟嘟 这道题只要状态一想出来,这题就做完了。 另 dp[i][j] 表示 i 首歌音量 j 能否达到,则如果dp[i - 1][j] = 1,那么dp[i][j + c[i]] = dp[i][j - c[i]] = 1.然后最后从Max到0反向遍历dp[n][i]即可。 注意这题数组要开2e3,
阅读全文
摘要:嘟嘟嘟 简单说就是一道最短路+dp。 令dp[i] 表示到第 i 天最小的总成本,每一次 j 从 i 到1枚举,得到dp方程 dp[i] = min(dp[i], dp[j - 1] + cost * (i - j + 1) + k)。其中 cost 表示从 j 到 i 这几天都可以走的最短路,因此
阅读全文
摘要:嘟嘟嘟 这是一篇假题解 刚开始这道题我觉得是矩阵树定理,然而好像还得用高斯消元求行列式,不太会呀……然后想了半天dp式也没想出来,看了题解还是不太懂,最后lba,qmcp两人告诉了我一个玄学的方法。 首先f[1] = 1, f[2] = 3,然后像斐波那契一样递推直到第n项,如果n为奇数,就输出f[
阅读全文
摘要:传送门:https://www.luogu.org/problemnew/show/P3155 一道挺水的树形dp题,然后我因为一个挺智障的问题debug了一晚上…… 嗯……首先想,如果一个点的颜色和他的儿子相同,那么删去他儿子的颜色显然不影响,而且更符合最优解,然后我们dp时就从子树开始往上找,将
阅读全文
摘要:[问题描述]:潜水员为了潜水要使用特殊的装备。他有一个带2 种气体的气缸:一个为氧气,一个为氮气。让潜水员下潜的深度需要各种的数量的氧和氮。潜水员有一定数量的气缸。每个气缸都有重量和气体容量。潜水员为了完成他的工作需要特定数量的氧和氮。他完成工作所需气缸的总重的最低限度的是多少?例如:潜水员有5 个
阅读全文
摘要:题目描述 某大学有N个职员,编号为1~N。他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri,但是呢,如果某个职员的上司来参加舞会了,那么这个职员就无论如何也不肯来参加舞会了。所以,请你编程计算
阅读全文
摘要:问题描述:有一批共n 个集装箱要装上艘载重量为c 的轮船,其中集装箱i 的重量为wi。找出一种最优装载方案,将轮船尽可能装满,即在装载体积不受限制的情况下,将尽可能重的集装箱装上轮船。 输入格式:第一行有2 个正整数n(1<=n<=40)和c。n 是集装箱数,c 是轮船的载重量。接下来的1 个有n
阅读全文
摘要:【问题描述】辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时
阅读全文
摘要:最长公共子序列 例:求两个字符串最长公共子序列长度。如a[] = {"abcedf"}, b[] = {"abtrenf},则最长公共子序列为abef,长度为4 伪代码: 代码 这是子序列的一个最基本的问题,从这个问题可以衍生出很多相关的子序列问题。 最长回文子序列例:有一个字符串,求最少删去几个字
阅读全文
摘要:01背包 这是最简单的一种背包,因为对于每一件物品都只有放和不放两种情况,故叫01背包。所以状态转换方程dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - c[i]] + v[i]);dp[i][j]指有i个物品,在j个空间中能存放的最大价值dp[i - 1][j]
阅读全文

浙公网安备 33010602011771号