- 博客(3)
- 收藏
- 关注
原创 贪心法/d森林问题
题目 设T为一带权树,树中的每个边的权都为整数。又设S为T的一个顶点的子集,从T中删除S中的所有结点,则得到一个森林,记为T/S。如果T/S中所有树从根到叶子节点的路径长度都不超过d,则称T/S是一个d森林。设计一个算法求T的最小顶点集合S,使T/S为一个d森林。 题解 * d森林 */ #include<bits/stdc++.h> #define MAXN 10000 + 10 using namespace std; int parent[MAXN], leaf[MAXN],
2021-05-13 11:42:07
1627
原创 动态规划
题目 设有一个长度为L的钢条,在钢条上标有n个位置点(p1,p2,…,pn)。现在需要按钢条上标注的位置将钢条切割为n+1段,假定每次切割所需要的代价与所切割的钢条长度成正比。请编写一个算法,能够确定一个切割方案,使切割的总代价最小。 题解 * DP */ #include<bits/stdc++.h> using namespace std; int min (int a, int b) { return a < b ? a : b;; } /** * j-i=1 =
2021-05-13 11:41:18
304
原创 分治与递归
题目 设有n个互不相同的元素x1,x2,…, xn,每个元素xi带有一个权值wi,且∑_(i=1)^n▒w_i =1。若元素xk满足∑_(x_i<x_k)▒w_i ≤□(1/2) 且∑_(x_i>x_k)▒w_i ≤1/2,则称元素xk为x1,x2,…, xn的带权中位数。请编写一个算法,能够在最坏情况下用O(n)时间找出n个元素的带权中位数。 题解 * 带权中位数 */ #include<bits/stdc++.h> using namespace std; //找到中位数
2021-05-13 11:39:22
355
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅