随笔分类 -  动态规划

摘要:【题目大意】 大致题意就是,你的初始坐标为$x$,你要去数轴上的$n$个点,问你到达所有点的时间总和最小是多少。 直接贪心肯定不行,所以考虑$DP$ 先把坐标离散(也就是预处理两点距离$dis[i][j]=abs(a[i]−a[j])$) 接下来考虑如何dp。 关注到一个性质,如果到目前为止,奶牛吃 阅读全文
posted @ 2020-08-09 15:57 hulean 阅读(243) 评论(0) 推荐(0)
摘要:题目大意 鹰蛋问题. $n$个蛋,$m$层楼. 存在一层楼$E$,使得$E$以及$E$以下的楼层鹰蛋都不会摔碎,问最坏情况下最少多少次能够知道$E$. 非常经典的模型,初看题目根本想不到用什么方法做,一开始可能会想到二分答案、单调队列和一些线性的东西。但是明确的说:这些都是不可行的! 正确的解法其实 阅读全文
posted @ 2020-08-08 21:33 hulean 阅读(268) 评论(0) 推荐(0)
摘要:【题目大意】 Byteotian Bit Bank (BBB) 拥有一套先进的货币系统,这个系统一共有$n$种面值的硬币,面值分别为$b1, b2,..., bn$. 但是每种硬币有数量限制,现在我们想要凑出面值$k$求最少要用多少个硬币. \(n\le200,1\le k,b_i \le10000 阅读全文
posted @ 2020-08-08 18:36 hulean 阅读(345) 评论(0) 推荐(0)
摘要:设$dp[i][j]$表示文本串的前$j$个字符匹配了模式串第$i$个通配符(包括这个通配符)前面的所有字符,值为$0$代表不能,值为$1$代表可以 那么,显然有两种转移:第$i+1$个通配符是'\(*\)'或者'\(?\)' 转移的条件,是从第$j+1$个字符开始的一段字符串可以与第$i$个和第$ 阅读全文
posted @ 2020-08-07 20:48 hulean 阅读(200) 评论(0) 推荐(0)
摘要:题目描述 物流公司要把一批货物从码头$A$运到码头$B$。由于货物量比较大,需要$n$天才能运完。货物运输过程中一般要转停好几个码头。物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪。由于各种因素的存在,有的时候某个码头会无法装卸货物。这时候就必须修改运输路线,让货物能够 阅读全文
posted @ 2019-07-04 16:16 hulean 阅读(330) 评论(0) 推荐(0)
摘要:看还没有人发记搜的题解,赶紧来~~水~~发一篇 我们定义 为区间 内最少添加几个括号才能把这个串变成正规括号序列。 考虑四种情况 1. 不存在这种子串,返回 2. 子串长度为 无论是 都是要消耗1的,返回 3. 那么返回的是DP(i+1,j 1) 4. 其他情况,枚举断点,详见代码 至于输出嘛... 阅读全文
posted @ 2019-05-21 21:47 hulean 阅读(313) 评论(0) 推荐(0)
摘要:树形DP的一道较为基础的模板题 状态 转移 初始 答案 完整代码: cpp include using namespace std; const int N=6000+10; int n,m; int r[N]; bool v[N]; vectorson[N]; int dp[N][2]; inli 阅读全文
posted @ 2019-05-07 21:52 hulean 阅读(216) 评论(0) 推荐(0)
摘要:动态规划 状态 初始 转移 答案 完整代码: cpp include using namespace std; const int MAXN=10000+10; const int MAXM=500+10; int n,m; int d[MAXN]; int dp[MAXN][MAXM]; inli 阅读全文
posted @ 2019-05-07 12:19 hulean 阅读(211) 评论(0) 推荐(0)
摘要:详细解析解题过程 设计状态 初始数组 cpp for(int i=0;i using namespace std; typedef long long ll; int n,m; ll a[30],b[30]; ll dp[30][250]; inline int read() { int tot=0 阅读全文
posted @ 2019-05-07 09:33 hulean 阅读(249) 评论(0) 推荐(0)
摘要:$n 特别地,第1个位置的树与第n个位置的树相邻。 这个~~好像~~没有考虑过 所以要把位置为1的特殊处理 那么答案就应该是这个: 完整代码: cpp include using namespace std; const int MAXN=100000+10; int n; int a[MAXN], 阅读全文
posted @ 2019-05-06 13:06 hulean 阅读(251) 评论(0) 推荐(0)
摘要:状态: 转移 判断 计算面积 $S=\sqrt{p (p a) (p b) (p c)}$ $p$为半周长:$(a+b+c)/2$ 献上完整代码: cpp include using namespace std; int n,c; int l[50]; int wood[4]; bool dp[80 阅读全文
posted @ 2019-05-06 11:23 hulean 阅读(336) 评论(0) 推荐(0)
摘要:状态: : 1. 到达第i行时, 2. 到达第j列时, 3. 刷到第k次时, 4. 这一格有没有刷对 转移 1. 换一块木板时肯定要多刷一次 2. 当前格子与上一个格子颜色相同时 3. 当前格子与上一个格子颜色不相同时 代码: cpp include using namespace std; int 阅读全文
posted @ 2019-05-01 13:11 hulean 阅读(252) 评论(0) 推荐(0)