随笔分类 -  DP动态规划

摘要:Solution 观察范围 $a_i\le 30$ 比较特殊,于是我们可以试着考虑 $b$ 的范围。 直觉告诉我们 $b$ 不会很大,当 $b_i\le 59$ 时,有 $|a_i-b_i|\le 29$。当 $b_i > 59$ 时,$|a_i-b_i|> 29$,但是如果这时我们将 $b_i$ 阅读全文
posted @ 2023-03-31 20:34 Epoch_L 阅读(23) 评论(0) 推荐(0)
摘要:Solution 延续上一题的思路,发现只与 $1$ 和 $-1$ 的数量有关,设 $1$ 的数量为 $a$,$-1$ 的数量为 $b$。上一题的构造方案为 $1$ 和 $-1$ 交替放,再把剩余的放在末尾。 当 $a\le b$ 时,最后剩余的是 $-1$,显然最大子段和为 $1$。所以只要保证没 阅读全文
posted @ 2022-11-16 20:04 Epoch_L 阅读(70) 评论(0) 推荐(0)
摘要:题目链接: 洛谷 Codeforces Problem 这题目翻译真的神了,好多歧义,看不懂,给一个本人翻译: 给你一个长度为 $n$ 的序列 $a$,定义幸运数为仅含有 $4$ 或 $7$ 的数,你需要取出它的一个的子序列,满足以下条件: 长度为 $k$。 不能出现相同的幸运数,即最多 $1$ 次 阅读全文
posted @ 2022-08-17 18:33 Epoch_L 阅读(58) 评论(0) 推荐(0)
摘要:题目链接: 洛谷 Codeforces Solution 二分好题。 答案有单调性,首先二分。 现在问题转化成如何判断最少要改几个,使用 dp,设 $f(i)$ 表示第 $i$ 个不改,前 $i$ 个最多几个不改,转移方程为: $$ f(i)=\max(f(j)+1) $$ 这个转移方程成立,当且仅 阅读全文
posted @ 2022-08-15 19:26 Epoch_L 阅读(39) 评论(0) 推荐(0)
摘要:题目链接 Solution 这种字符串题一般都是区间 dp,设 $f(i,j)$ 表示第 $i$ 到 $j$ 的子串的最小长度,如果没有折叠操作,则枚举断点 $k$,转移方程为: $$ f(i,j)=\min(f(i,j),f(i,k)+f(k+1,j)) $$ 若有折叠操作,这时想要折叠就必须满足 阅读全文
posted @ 2022-08-14 23:21 Epoch_L 阅读(132) 评论(0) 推荐(0)
摘要:原题链接 题解 一道区间dp裸题,跟模板题石子合并差不多,但是这里是在玩2048,所以要一样才能合并,而且记录的是出现过的最大值,所以答案不一定是 $f[1][n]$,因为可能出现无法合并的情况。 转移方程: $$ f[i][j]=max(f[i][j],f[k+1][j]+1)(i \le k < 阅读全文
posted @ 2022-07-06 11:31 Epoch_L 阅读(28) 评论(0) 推荐(0)
摘要:原题链接 题解 设 $f[i][j]$ 表示对 $i$ 到 $j$ 的字串染色最少多少次,设字符串为 $c$,有 $3$ 种情况: 当 $i=j$ 时,也就是只有一个字符,染色一次就可以了。转移方程为 $f[i][i]=1(1 \le i \le n)$。 当 $i\not=j$ 且 $c[i]=c 阅读全文
posted @ 2022-07-06 11:29 Epoch_L 阅读(73) 评论(0) 推荐(0)
摘要:原题链接 题解 首先本题只从左边和右边取,所以剩下的必然是区间,妥妥的区间DP,直接设状态: $f[i][j][0]$ 表示第 $i$ 人从左边插入区间 $i+1,j$ $f[i][j][1]$ 表示第 $j$ 人从右边插入区间 $i,j-1$ 因为第 $i$ 个人从左边插入,根据题意,他就会小于前 阅读全文
posted @ 2022-07-06 11:26 Epoch_L 阅读(38) 评论(0) 推荐(0)
摘要:原题链接 题解 考虑DP,我们设 $f[i]$ 表示前 $i$ 头奶牛所能取到的最大值,则在 $(i-k,i)$ 区间中必须有一头奶牛不取,假设它是 $j$,则 $$ f[i]= \max(f[j-1]+s[i]-s[j]) $$ 其中 $s$ 数组表示前缀和。 观察转移方程,发现 $s[i]$ 是 阅读全文
posted @ 2022-07-06 11:00 Epoch_L 阅读(39) 评论(0) 推荐(0)
摘要:原题链接 题解 设 $f[i]$ 表示跳到 $i$ 所能取到的最大价值,则我们需要取一个 $j(j<i)$ 使 $f[j]+sum[i]-sum[j]-i100$ 最大,其中 $sum$ 数组表示前缀和,所以转移方程即为: $$ f[i]=\max(f[j]+sum[i]-sum[j]-i100) 阅读全文
posted @ 2022-07-06 10:57 Epoch_L 阅读(24) 评论(0) 推荐(0)
摘要:原题链接 序言 本题下面将给出 $3$ 种做法,分别为: $O(n^3)$ 暴力算法。 $O(n^2)$ 费用提前计算,小优化。 $O(nlogn)$ 斜率优化。 洛谷数据很水,$O(n^2)$ 就可以过,加强版的链接贴上 loj10186 题解 Part 1:暴力算法 设 $f[i][j]$ 表示 阅读全文
posted @ 2022-07-06 10:56 Epoch_L 阅读(48) 评论(0) 推荐(0)