动态规划
再码亿行
这个作者很懒,什么都没留下…
展开
-
滑雪
题目描述给定一个R行C列的矩阵,表示一个矩形网格滑雪场。矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。下面给出一个矩阵作为例子:1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9在给定矩阵中,一条可行的滑行轨迹为24-17原创 2020-10-26 15:02:34 · 300 阅读 · 0 评论 -
没有上司的舞会
题目描述Ural大学有N名职员,编号为1~N。他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。每个职员有一个快乐指数,用整数 Hi 给出,其中 1≤i≤N。现在要召开一场周年庆宴会,不过,没有职员愿意和直接上司一起参会。在满足这个条件的前提下,主办方希望邀请一部分职员参会,使得所有参会职员的快乐指数总和最大,求这个最大值。输入格式第一行一个整数N。接下来N行,第 i 行表示 i 号职员的快乐指数Hi。接下来N-1行,每行输入一对整数L, K,表示K是L的直接上司。输出格式原创 2020-10-25 21:54:00 · 851 阅读 · 1 评论 -
编辑距离
给定n个长度不超过10的字符串以及m次询问,每次询问给出一个字符串和一个操作次数上限。对于每次询问,请你求出给定的n个字符串中有多少个字符串可以在上限操作次数内经过操作变成询问给出的字符串。每个对字符串进行的单个字符的插入、删除或替换算作一次操作。输入格式第一行包含两个整数n和m。接下来n行,每行包含一个字符串,表示给定的字符串。再接下来m行,每行包含一个字符串和一个整数,表示一次询问。字符串中只包含小写字母,且长度均不超过10。输出格式输出共m行,每行输出一个整数作为结果,表示一次询问中原创 2020-10-20 15:58:25 · 74 阅读 · 0 评论 -
最短编辑距离
给定两个字符串A和B,现在要将A经过若干操作变为B,可进行的操作有:删除–将字符串A中的某个字符删除。插入–在字符串A的某个位置插入某个字符。替换–将字符串A中的某个字符替换为另一个字符。现在请你求出,将A变为B至少需要进行多少次操作。输入格式第一行包含整数n,表示字符串A的长度。第二行包含一个长度为n的字符串A。第三行包含整数m,表示字符串B的长度。第四行包含一个长度为m的字符串B。字符串中均只包含大写字母。输出格式输出一个整数,表示最少操作次数。数据范围1≤n,m≤1000原创 2020-10-19 21:01:56 · 249 阅读 · 0 评论 -
石子合并
设有N堆石子排成一排,其编号为1,2,3,…,N。每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。例如有4堆石子分别为 1 3 5 2, 我们可以先合并1、2堆,代价为4,得到4 5 2, 又合并 1,2堆,代价为9,得到9 2 ,再合并得到11,总代价为4+9+11=24;如果第二步是先合并2,3堆,则代价为7,得到4 7,原创 2020-10-13 17:44:14 · 219 阅读 · 0 评论 -
最长公共子序列
给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少。输入格式第一行包含两个整数N和M。第二行包含一个长度为N的字符串,表示字符串A。第三行包含一个长度为M的字符串,表示字符串B。字符串均由小写字母构成。输出格式输出一个整数,表示最大长度。数据范围1≤N,M≤1000输入样例:4 5acbdabedc输出样例:3#include<bits/stdc++.h>using namespace std;const int N原创 2020-10-13 16:41:06 · 418 阅读 · 0 评论 -
数字三角形
#include<bits/stdc++.h>using namespace std;const int N = 510, INF = 1e9;int n;int a[N][N];int f[N][N];int main(){ cin >> n; for(int i = 1; i <= n; i ++) for(int j = 1; j <= i; j ++) cin >> a[i][原创 2020-10-11 17:03:22 · 86 阅读 · 0 评论 -
背包问题总结
01背包问题特点:每件物品最多只能被选一次,即每件物品只有两种情况,选一次和不选,这也是该问题的名称由来。例题有 N 件物品和一个容量是 $V$ 的背包。每件物品只能使用一次。第 $i$ 件物品的体积是 $v_i$,价值是 $w_i$。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,$N,V$,用空格隔开,分别表示物品数量和背包容积。接下来有 $N$ 行,每行两个整数 $v_i, w_i$,用空格隔开,分别表示第 $i$ 件物原创 2020-10-10 20:08:17 · 194 阅读 · 0 评论 -
教你彻底学会动态规划——进阶篇
版权声明:本...转载 2019-12-07 15:06:29 · 78 阅读 · 0 评论 -
教你彻底学会动态规划——入门篇
动态规划相信大家都知道,动态规划算法也是新手在刚接触算法设计时很苦恼的问题,有时候觉得难以理解,但是真正理解之后,就会觉得动态规划其实并没有想象中那么难。网上也有很多关于讲解动态规划的文章,大多都是叙述概念,讲解原理,让人觉得晦涩难懂,即使一时间看懂了,发现当自己做题的时...转载 2019-12-07 15:04:50 · 325 阅读 · 0 评论