- 博客(20)
- 收藏
- 关注
原创 算法刷题笔记--DFS
() 用于二分查找区间内第一个 大于等于某值(>= x) 的迭代器位置。lower_bound返回的是地址 要减去a[0]的地址才得到下标。() 用于二分查找区间内第一个 大于某值(> x) 的迭代器位置。dfs -- 求全排列;
2024-04-21 12:09:28 339 1
原创 补题:Educational Codeforces Round 163 (Rated for Div. 2)D
【代码】补题:Educational Codeforces Round 163 (Rated for Div. 2)D。
2024-04-10 20:26:47 169 1
原创 寒假2.22日所学--bellman-ford算法
/备份,防止下列更新中的dist[a]已经被更新过,从而导致无法保证dist[b]的结果是由i条边组成的;
2024-02-22 20:57:28 307 1
原创 寒假2.22日所学--算法:图中点的层次
/链表,每个链表记录从a可以到达的边,ne[]可以倒着找到之前存在链表里的结点,直到到达第一个点,此时ne[]=-1;//idx不断增加,但用ne[],e[],h[]数组,将可以到达的点联系起来;找到图中一点到另一点的最短路;
2024-02-22 11:44:23 350 1
原创 寒假1.29日所学--动态规划题目
/range(开头,结尾,步长) --范围左闭右开。//没取等 自己和自己的组合已经统计过了。//取等 --统计自己和自己的组合。
2024-01-30 00:42:05 937 1
原创 寒假1.26日所学--石子合并
每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。每堆石子有一定的质量,可以用一个整数来描述,现在要将这 N 堆石子合并成为一堆。问题是:找出一种合理的方法,使总的代价最小,输出最小代价。,最后一次合并代价为 11,总代价为 4+7+11=22。,再合并得到 11,总代价为 4+9+11=24;, 我们可以先合并 1、2 堆,代价为 4,得到。, 又合并 1、2 堆,代价为 9,得到。
2024-01-26 19:11:04 398 1
原创 寒假1.26日所学--编辑距离
对于每次询问,请你求出给定的 n 个字符串中有多少个字符串可以在上限操作次数内经过操作变成询问给出的字符串。给定 n 个长度不超过 1010 的字符串以及 m 次询问,每次询问给出一个字符串和一个操作次数上限。输出共 m 行,每行输出一个整数作为结果,表示一次询问中满足条件的字符串个数。再接下来 m 行,每行包含一个字符串和一个整数,表示一次询问。每个对字符串进行的单个字符的插入、删除或替换算作一次操作。接下来 n 行,每行包含一个字符串,表示给定的字符串。字符串中只包含小写字母,且长度均不超过 10。
2024-01-26 18:24:39 335 1
原创 寒假1.26日所学--最短编辑距离
现在请你求出,将 A 变为 B 至少需要进行多少次操作。第一行包含整数 n,表示字符串 A 的长度。第三行包含整数 m,表示字符串 B 的长度。第二行包含一个长度为 n 的字符串 A。第四行包含一个长度为 m 的字符串 B。输出一个整数,表示最少操作次数。字符串中均只包含大小写字母。
2024-01-26 18:09:21 348 1
原创 寒假1.25日所学:最长上升子序列
给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。//二分 来找出已存的结果中大于a[i]的最大的q[i];第二行包含 N 个整数,表示完整序列。输出一个整数,表示最大长度。−109≤数列中的数≤109。
2024-01-25 17:55:24 342
原创 寒假1.24日所学--动态规划 算法导论笔记
2 对于一个给定的问题,在其中可能的第一步选择中,你假定已经知道哪种选择会得到最优解 先不管这种选择是如何达到的 只是假定已经知道了这种选择。3 给定可获得最优解的选择后,确定这次的选择会产生哪些子问题,以及如何更好的刻画子问题。使得每个子问题都依赖于更小的子问题求解,因而我们只需要将子问题按规模排序,按由小至大的顺序进行求解。即问题的递归算法会反复求解相同的子问题,而不是一直生成新的子问题 则称该问题具有重叠子问题性质。给定两个序列X和Y,如果Z既是X的子序列也是Y的子序列,则称它是X,Y的公共子序列。
2024-01-24 23:41:21 347 1
原创 寒假1.23日所学--动态规划--最长上升子序列
给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。第二行包含 N 个整数,表示完整序列。输出一个整数,表示最大长度。第一行包含整数 N。
2024-01-24 15:40:34 355 1
原创 寒假1.22日所学:动态规划--数字三角形
给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。接下来 n 行,每行包含若干整数,其中第 i 行表示数字三角形第 i 层包含的整数。第一行包含整数 n,表示数字三角形的层数。个整数,表示最大的路径数字和。
2024-01-22 18:37:18 341 1
原创 寒假1.21日所学 分组背包问题
每件物品体积 vij 价值是wij (i是组号 j是组内编号)将哪些物品装入背包 可使总体积不超过背包容量 且总价值最大。每组物品有若干个 同一组物品只能选一个。
2024-01-22 00:03:46 337 1
原创 寒假1.20日所学--动态规划背包问题
2. 选第 i 个物品:f [ i ][ j ]=f [ i-1 ][ j-v[i] ]+w[ i ];1. 不选第 i 个物品:f [ i ][ j ]=f [ i-1][ j ];( 假设已经把i-1个物品的状态已经计算完 现求的 i 个的状态 )//若选了i,则前i-1个物品所能用的体积为j-v[i];//前n个物品 即所有物品 体积为 i 时可达的最大价值。//只看前i-1个物品 体积为 j 时的最大价值。
2024-01-20 21:23:03 283
原创 寒假1.20日所学 补D题
int i = 2;divs[i]++;x /= i;i++;//把x分解为因数 并且在第二个whie存在的情况下 分解得到的因数一定是质数 用divs来存储该因数的个数int n;cin >> n;i < n;i++) {//e来表示divs中的已经存入的所有元素//e.second表示map中的第二个intint t;cin >> t;
2024-01-20 12:37:31 369
原创 寒假 1.19 所学
c.cbegin() 返回一个 const bidirectional iterator 指向第一元素(始自C++11)c.cend() 返回一个 const bidirectional iterator 指向最末元素的下一位置(始自C++11)c.rbegin() 返回一个反向的 (reverse) iterator 指向反向迭代的第一元素。
2024-01-20 00:08:31 383
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人