摘要:
DescriptionFarmer John is an astounding accounting wizard and has realized he might run out of money to run the farm. He has already calculated and recorded the exact amount of money (1 ≤moneyi≤ 10,000) that he will need to spend each day over the nextN(1 ≤N≤ 100,000) days.FJ wants to create a budge 阅读全文
摘要:
题目描述:为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买。请问:你用有限的资金最多能采购多少公斤粮食呢?思路裸多重背包, 本想练练倍增优化的, AC 后又没动力了代码#include #include #include using namespace std;int weight[222];int bags [222];int money [222];int dp [222];int main() { int t; scanf("%d", &t); 阅读全文
摘要:
题目描述:又到毕业季,很多大公司来学校招聘,招聘会分散在不同时间段,小明想知道自己最多能完整的参加多少个招聘会(参加一个招聘会的时候不能中断或离开)。思路算法导论贪心算法章节原题, 编程之美上也有类似题目.这种招聘会还比较简单, 招聘会本身没有权值, 假如考虑权值, 题目就变成动态规划了先对招聘会按照截止时间排序, 然后按照截止时间选取具体哪场招聘会, 时间复杂度为 O(nlogn)代码#include #include #include #include using namespace std;class Meeting {public: int st, ed; Meeting(... 阅读全文
摘要:
题目描述:在一个无权图中,两个节点间的最短距离可以看成从一个节点出发到达另一个节点至少需要经过的边的个数。同时,任意两个节点间的最短路径可能有多条,使得从一个节点出发可以有多条最短路径可以选择,并且沿着这些路径到达目标节点所经过的边的个数都是一样的。但是在图中有那么一些特殊的节点,如果去除这些点,那么从某个初始节点到某个终止节点的最短路径长度要么变长,要么这两个节点变得不连通。这些点被称为最短路径上的关键点。现给定一个无权图,以及起始节点和终止节点,要求输出该图上,这对节点间最短路径上的关键点数目。思路1. 起初把题目想简单了, 以为一遍 BFS 就能得到正解, 用案例跑了下没报错就直接提交了 阅读全文
摘要:
题目描述:大家都知道在dota游戏中,装备是对于英雄来说十分重要的要素。英雄们不仅可以购买单个的装备,甚至某些特定的装备组合能够合成更强的装备。为了简化问题,我们将每个装备对于英雄的功能抽象为一个整数:价值。同时,如上所说,一些特定的装备可以用来合成更强的装备,玩家会因此获得除原装备价值外额外的价值。给定玩家现有的金钱数,每个装备的价格和其对应的价值,以及装备合成的信息。输出,其能获得的最大价值数。注意:每件装备只能参与合成一件合成装备(即原装备参与合成后得到合成后的新装备,原装备消失),除非一次购买多个该种装备。思路1. 刚开始没看懂题目, 还以为是有依赖的背包问题, 后来看了解题报告才明白 阅读全文
摘要:
题目描述:给定一个m*m的矩阵,矩阵中每个数字都是整数。在该矩阵中找到一个大小为n*n的子矩阵,使该子矩阵中的所有元素和最小。输出该最小元素和。思路1. 简单版的最小矩阵, 矩阵被限定在正方形2. 对于子问题的求解, 几乎算不上是动态规划了, 只能说是一道模拟题3. 一个游标, 遍历第 n~m 行, 对每一行, 利用单调队列计算矩阵的和, 时间复杂度为 o(m*m)代码#include #include #include using namespace std;int matrix[200][200];int line[200];int calOneLine(int m, int n) { . 阅读全文
摘要:
Floyd-Warshall算法(Floyd-Warshall algorithm)是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题,同时也被用于计算有向图的传递闭包。Floyd-Warshall算法的时间复杂度为,空间复杂度为。原理Floyd-Warshall算法的原理是动态规划。设为从到的只以集合中的节点为中间节点的最短路径的长度。若最短路径经过点k,则;若最短路径不经过点k,则。因此,。在实际算法中,为了节约空间,可以直接在原来空间上进行迭代,这样空间可降至二维。(见下面的算法描述)算法描述Floyd-Warshall算法的描述如下:for k ← 1 to 阅读全文
摘要:
题目描述:为了加快城市之间的通行和物资流动速度,A国政府决定在其境内的N个大中型城市之间,增加修建K条公路。已知这N个城市中的任意两个都能相互连通,且已知其最短的路径长度。为了时刻监测修建新路对A国城市的影响,特任命你为观察员,负责在每修建完一条公路之后,就向该国领导汇报当前N个城市间的最短路之和。思路1. 这道题目是 floyd 算法的变形, 题目已给出任意两个城市之间的最短距离, 每次增加一条道路, 求解增加这条道路后各个城市之间的最短路径之和减小到多少2. floyd 算法描述如下Floyd-Warshall算法的原理是动态规划设为从到的只以集合中的节点为中间节点的最短路径的长度。若最短 阅读全文
摘要:
题目描述: Every positive number can be presented by the exponential form.For example, 137 = 2^7 + 2^3 + 2^0。 Let's present a^b by the form a(b).Then 137 is presented by 2(7)+2(3)+2(0). Since 7 = 2^2 + 2 + 2^0 and 3 = 2 + 2^0 , 137 is finally presented by 2(2(2)+2 +2(0))+2(2+2(0))+2(0). Given a posit 阅读全文
摘要:
题目描述:哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和思路1. 构建哈夫曼树然后 topDown 遍历即可2. 也可以不显式的创建树. 所有树叶点的和即为所求(根节点以外)代码 STL priority_queue 自定类型不会用#include #include #include using namespace std;class Node {public: int value; Node *left, *right; Node(int _value... 阅读全文